0 txs
0 calls
constructor
constructor(address link, address linkEthFeed, address fastGasFeed, uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
functions
FAST_GAS_FEED
viewfunction FAST_GAS_FEED() view returns (address)
getCanceledUpkeepList
viewfunction getCanceledUpkeepList() view returns (uint256[])
getConfig
viewfunction getConfig() view returns (uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
getKeeperInfo
viewfunction getKeeperInfo(address query) view returns (address payee, bool active, uint96 balance)
getKeeperList
viewfunction getKeeperList() view returns (address[])
getUpkeep
viewfunction getUpkeep(uint256 id) view returns (address target, uint32 executeGas, bytes checkData, uint96 balance, address lastKeeper, address admin, uint64 maxValidBlocknumber)
getUpkeepCount
viewfunction getUpkeepCount() view returns (uint256)
LINK_ETH_FEED
viewfunction LINK_ETH_FEED() view returns (address)
LINK
viewfunction LINK() view returns (address)
owner
viewfunction owner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
acceptPayeeship
nonpayablefunction acceptPayeeship(address keeper)
addFunds
nonpayablefunction addFunds(uint256 id, uint96 amount)
cancelUpkeep
nonpayablefunction cancelUpkeep(uint256 id)
checkUpkeep
nonpayablefunction checkUpkeep(uint256 id, address from) returns (bytes performData, uint256 maxLinkPayment, uint256 gasLimit, int256 gasWei, int256 linkEth)
onTokenTransfer
nonpayablefunction onTokenTransfer(address sender, uint256 amount, bytes data)
performUpkeep
nonpayablefunction performUpkeep(uint256 id, bytes performData) returns (bool success)
recoverFunds
nonpayablefunction recoverFunds()
registerUpkeep
nonpayablefunction registerUpkeep(address target, uint32 gasLimit, address admin, bytes checkData) returns (uint256 id)
setConfig
nonpayablefunction setConfig(uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
setKeepers
nonpayablefunction setKeepers(address[] keepers, address[] payees)
transferOwnership
nonpayablefunction transferOwnership(address _to)
transferPayeeship
nonpayablefunction transferPayeeship(address keeper, address proposed)
withdrawFunds
nonpayablefunction withdrawFunds(uint256 id, address to)
withdrawPayment
nonpayablefunction withdrawPayment(address from, address to)
events
ConfigSet
event ConfigSet(uint32 paymentPremiumPPB, uint24 blockCountPerTurn, uint32 checkGasLimit, uint24 stalenessSeconds, int256 fallbackGasPrice, int256 fallbackLinkPrice)
FundsAdded
event FundsAdded(uint256 indexed id, address indexed from, uint96 amount)
FundsWithdrawn
event FundsWithdrawn(uint256 indexed id, uint256 amount, address to)
KeepersUpdated
event KeepersUpdated(address[] keepers, address[] payees)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
PayeeshipTransferred
event PayeeshipTransferred(address indexed keeper, address indexed from, address indexed to)
PayeeshipTransferRequested
event PayeeshipTransferRequested(address indexed keeper, address indexed from, address indexed to)
PaymentWithdrawn
event PaymentWithdrawn(address indexed keeper, uint256 indexed amount, address indexed to, address payee)
UpkeepCanceled
event UpkeepCanceled(uint256 indexed id, uint64 indexed atBlockHeight)
UpkeepPerformed
event UpkeepPerformed(uint256 indexed id, bool indexed success, address indexed from, uint96 payment, bytes performData)
UpkeepRegistered
event UpkeepRegistered(uint256 indexed id, uint32 executeGas, address admin)
errors
No errors.
creation bytecode
0x60e06040523480156200001157600080fd5b50604051620043da380380620043da83398181016040526101208110156200003857600080fd5b5080516020820151604083015160608085015160808087015160a08089015160c0808b015160e08c0151610100909c0151600080546001600160a01b0319163317905560016002556001600160601b03198c8a1b81169097528a891b87169094529688901b90941690935296979596949592949093919290620000c0868686868686620000cf565b50505050505050505062000214565b6000546001600160a01b031633146200012f576040805162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b604080516080808201835263ffffffff89811680845262ffffff8a81166020808701829052938b16868801819052918a166060968701819052600a805463ffffffff1916851762ffffff60201b191664010000000084021763ffffffff60381b191667010000000000000085021762ffffff60581b19166b0100000000000000000000008302179055600b8a9055600c8990558751938452938301528186015292830152810184905260a0810183905290517ff68c98604b3cbc1a909e0df75315ce475fbc89bae7a6ab88b53573897f58d0d79160c0908290030190a1505050505050565b60805160601c60a05160601c60c05160601c6141686200027260003980610ca05280613b2b52508061177c5280613be2525080610ba75280610f185280611229528061131152806116d95280611a2a5280611af452506141686000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c8063a710b221116100ee578063c41b813a11610097578063da5c674111610071578063da5c67411461083c578063eb5dcd6c146108f0578063f2fde38b1461092b578063fecf27c91461095e576101a3565b8063c41b813a14610633578063c7c3a19a14610700578063c80480221461081f576101a3565b8063b79550be116100c8578063b79550be14610512578063b7fdb4361461051a578063c3f909d4146105dc576101a3565b8063a710b2211461049c578063ad178361146104d7578063b121e147146104df576101a3565b8063744bfe61116101505780638da5cb5b1161012a5780638da5cb5b146103d1578063948108f7146103d9578063a4c0ed361461040a576101a3565b8063744bfe611461030557806379ba50971461033e5780637bbaf1ea14610346576101a3565b80631e12b8a5116101815780631e12b8a51461027f5780632cb6864d146102f55780634584a419146102fd576101a3565b806310833057146101a857806315a126ea146101f65780631b6b6d231461024e575b600080fd5b6101f4600480360360c08110156101be57600080fd5b5063ffffffff813581169162ffffff60208201358116926040830135169160608101359091169060808101359060a00135610966565b005b6101fe610b36565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561023a578181015183820152602001610222565b505050509050019250505060405180910390f35b610256610ba5565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102b26004803603602081101561029557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc9565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845291151560208401526bffffffffffffffffffffffff1682820152519081900360600190f35b6101fe610c47565b610256610c9e565b6101f46004803603604081101561031b57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610cc2565b6101f4610fd9565b6103bd6004803603604081101561035c57600080fd5b8135919081019060408101602082013564010000000081111561037e57600080fd5b82018360208201111561039057600080fd5b803590602001918460018302840111640100000000831117156103b257600080fd5b5090925090506110db565b604080519115158252519081900360200190f35b610256611152565b6101f4600480360360408110156103ef57600080fd5b50803590602001356bffffffffffffffffffffffff1661116e565b6101f46004803603606081101561042057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045d57600080fd5b82018360208201111561046f57600080fd5b8035906020019184600183028401116401000000008311171561049157600080fd5b5090925090506112f9565b6101f4600480360360408110156104b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166114f4565b61025661177a565b6101f4600480360360208110156104f557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661179e565b6101f46118cb565b6101f46004803603604081101561053057600080fd5b81019060208101813564010000000081111561054b57600080fd5b82018360208201111561055d57600080fd5b8035906020019184602083028401116401000000008311171561057f57600080fd5b91939092909160208101903564010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111640100000000831117156105d157600080fd5b509092509050611bb6565b6105e4611fda565b604051808763ffffffff1681526020018662ffffff1681526020018563ffffffff1681526020018462ffffff168152602001838152602001828152602001965050505050505060405180910390f35b61066c6004803603604081101561064957600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16612046565b6040518080602001868152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b838110156106c15781810151838201526020016106a9565b50505050905090810190601f1680156106ee5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61071d6004803603602081101561071657600080fd5b50356125c6565b604051808873ffffffffffffffffffffffffffffffffffffffff1681526020018763ffffffff16815260200180602001866bffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff168152602001828103825287818151815260200191508051906020019080838360005b838110156107de5781810151838201526020016107c6565b50505050905090810190601f16801561080b5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6101f46004803603602081101561083557600080fd5b503561276f565b6108de6004803603608081101561085257600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169263ffffffff6020820135169260408201359092169181019060808101606082013564010000000081111561089f57600080fd5b8201836020820111156108b157600080fd5b803590602001918460018302840111640100000000831117156108d357600080fd5b5090925090506129b1565b60408051918252519081900360200190f35b6101f46004803603604081101561090657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612dd5565b6101f46004803603602081101561094157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612f9f565b6108de61309b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b604080516080808201835263ffffffff89811680845262ffffff8a81166020808701829052938b16868801819052918a166060968701819052600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001685177fffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff166401000000008402177fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff166701000000000000008502177fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff166b0100000000000000000000008302179055600b8a9055600c8990558751938452938301528186015292830152810184905260a0810183905290517ff68c98604b3cbc1a909e0df75315ce475fbc89bae7a6ab88b53573897f58d0d79160c0908290030190a1505050505050565b60606005805480602002602001604051908101604052809291908181526020018280548015610b9b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b70575b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526007602090815260409182902082516060810184528154948516808252740100000000000000000000000000000000000000009095046bffffffffffffffffffffffff1692810183905260019091015460ff16151592018290529192909190565b60606004805480602002602001604051908101604052809291908181526020018280548015610b9b57602002820191906000526020600020905b815481526020019060010190808311610c81575050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b8073ffffffffffffffffffffffffffffffffffffffff8116610d4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b6000838152600660205260409020600101546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610dea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792063616c6c61626c652062792061646d696e00000000000000000000604482015290519081900360640190fd5b6000838152600660205260409020600201544367ffffffffffffffff9091161115610e7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f75706b656570206d7573742062652063616e63656c6564000000000000000000604482015290519081900360640190fd5b60008381526006602090815260409182902060010180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811690915582516bffffffffffffffffffffffff90911680825273ffffffffffffffffffffffffffffffffffffffff8616928201929092528251919286927ff3b5906e5672f3e524854103bcafbbdba80dbdfeca2c35e116127b1060a683189281900390910190a27f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610fa757600080fd5b505af1158015610fbb573d6000803e3d6000fd5b505050506040513d6020811015610fd157600080fd5b505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461105f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015290519081900360640190fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b600061114a60405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506130a1565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b81611178816138da565b6000838152600660205260409020600101546111a2906bffffffffffffffffffffffff1683613968565b600084815260066020908152604080832060010180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95861617905580517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201529386166044850152517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16936323b872dd9360648083019493928390030190829087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b5050604080516bffffffffffffffffffffffff841681529051339185917fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa7348915062039181900360200190a3505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461139d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c792063616c6c61626c65207468726f756768204c494e4b000000000000604482015290519081900360640190fd5b6020811461140c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64617461206d7573742062652033322062797465730000000000000000000000604482015290519081900360640190fd5b60008282602081101561141e57600080fd5b5035905061142b816138da565b600081815260066020526040902060010154611455906bffffffffffffffffffffffff1685613968565b60008281526006602090815260409182902060010180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff94851617905581519287168352905173ffffffffffffffffffffffffffffffffffffffff88169284927fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa73489150620392918290030190a35050505050565b8073ffffffffffffffffffffffffffffffffffffffff811661157757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616e6e6f742073656e6420746f207a65726f20616464726573730000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83811660009081526007602090815260409182902082516060810184528154948516808252740100000000000000000000000000000000000000009095046bffffffffffffffffffffffff16928101929092526001015460ff1615159181019190915290331461165d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792063616c6c61626c6520627920706179656500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8481166000818152600760209081526040918290208054851690558481015182513381529251948816946bffffffffffffffffffffffff90911693927f9819093176a1851202c7bcfa46845809b4e47c261866550e94ed3775d2f4069892908290030190a47f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8483602001516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015610fa757600080fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526008602052604090205416331461183357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6f6e6c792063616c6c61626c652062792070726f706f73656420706179656500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81811660008181526007602090815260408083208054337fffffffffffffffffffffffff000000000000000000000000000000000000000080831682179093556008909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461195157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b600354600090815b818110156119955760008181526006602052604090206001015461198b906bffffffffffffffffffffffff1684613968565b9250600101611959565b505060055460005b81811015611a25576000600582815481106119b457fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526007909152604090912054909150611a1a906bffffffffffffffffffffffff740100000000000000000000000000000000000000009091041685613968565b93505060010161199d565b5060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611aaf57600080fd5b505afa158015611ac3573d6000803e3d6000fd5b505050506040513d6020811015611ad957600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb33611b32846bffffffffffffffffffffffff88166139f6565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b8557600080fd5b505af1158015611b99573d6000803e3d6000fd5b505050506040513d6020811015611baf57600080fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b60005b600554811015611cbc57600060058281548110611c5857fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1682526007905260409020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055919091019050611c3f565b5060005b83811015611ef7576000858583818110611cd657fe5b73ffffffffffffffffffffffffffffffffffffffff6020918202939093013583166000818152600790925260408220805491955093169150868686818110611d1a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611d9f57508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611e0a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f63616e6e6f74206368616e676520706179656500000000000000000000000000604482015290519081900360640190fd5b600183015460ff1615611e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616e6e6f7420616464206b6565706572207477696365000000000000000000604482015290519081900360640190fd5b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9190911617825550600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682179055919091019050611cc0565b50611f0460058585613fda565b507f056264c94f28bb06c99d13f0446eb96c67c215d8d707bce2655a98ddf1c0b71f848484846040518080602001806020018381038352878782818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352858152602090810191508690860280828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039850909650505050505050a150505050565b60408051608081018252600a5463ffffffff80821680845262ffffff640100000000840481166020860181905267010000000000000085049093169585018690526b0100000000000000000000009093049092166060909301839052600b54600c549295919493929091565b6060600080600080612056613a6d565b6000878152600660205260409020805474010000000000000000000000000000000000000000900463ffffffff16935061208e613adc565b909350915061209e848484613ca7565b60018201546bffffffffffffffffffffffff918216965016851061212357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742066756e64730000000000000000000000000000604482015290519081900360640190fd5b6000888152600960209081526040808320905160248101928352815460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001841615020190911604604482018190527f6e04ff0d0000000000000000000000000000000000000000000000000000000093918291606490910190849080156121f15780601f106121c6576101008083540402835291602001916121f1565b820191906000526020600020905b8154815290600101906020018083116121d457829003601f168201915b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009097169690961786528754600a549151835193985060009788975073ffffffffffffffffffffffffffffffffffffffff909216955063ffffffff67010000000000000090930492909216935087928291908083835b602083106122f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016122bb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461235b576040519150601f19603f3d011682016040523d82523d6000602084013e612360565b606091505b5091509150816123d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616c6c20746f20636865636b20746172676574206661696c65640000000000604482015290519081900360640190fd5b8080602001905160408110156123e657600080fd5b81516020830180516040519294929383019291908464010000000082111561240d57600080fd5b90830190602082018581111561242257600080fd5b825164010000000081118282018810171561243c57600080fd5b82525081516020918201929091019080838360005b83811015612469578181015183820152602001612451565b50505050905090810190601f1680156124965780820380516001836020036101000a031916815260200191505b50604052505050809a5081935050508161251157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f75706b656570206e6f74206e6565646564000000000000000000000000000000604482015290519081900360640190fd5b61254a60405180606001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018b8152506130a1565b9150816125b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f63616c6c20746f20706572666f726d2075706b656570206661696c6564000000604482015290519081900360640190fd5b505050509295509295909350565b6000818152600660209081526040808320815160c081018352815473ffffffffffffffffffffffffffffffffffffffff8082168084527401000000000000000000000000000000000000000090920463ffffffff168387018190526001808601546bffffffffffffffffffffffff81168689019081526c010000000000000000000000009091048416606080880191825260029889015467ffffffffffffffff811660808a019081526801000000000000000090910490961660a089019081528d8d5260098c528a8d20935190519251965184548c5161010097821615979097027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169a909a04601f81018d90048d0286018d01909b528a85528c9b919a8c9a8b9a8b9a8b9a9199909890979694959193909187919083018282801561274e5780601f106127235761010080835404028352916020019161274e565b820191906000526020600020905b81548152906001019060200180831161273157829003601f168201915b50505050509450975097509750975097509750975050919395979092949650565b600081815260066020526040812060020154905467ffffffffffffffff9182169182149073ffffffffffffffffffffffffffffffffffffffff16331481806127c857508080156127c85750438367ffffffffffffffff16115b61283357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f746f6f206c61746520746f2063616e63656c2075706b65657000000000000000604482015290519081900360640190fd5b808061287557506000848152600660205260409020600101546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633145b6128e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f776e6572206f722061646d696e00000000000000000000000000604482015290519081900360640190fd5b43816128f4576128f1816032613d90565b90505b600085815260066020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8316179055821561297357600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018590555b60405167ffffffffffffffff82169086907f91cb3bb75cfbd718bbfccc56b7f53d92d7048ef4ca39a3b7b7c6d4af1f79118190600090a35050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314612a3857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b612a578673ffffffffffffffffffffffffffffffffffffffff16613e04565b612ac257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f746172676574206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b6108fc8563ffffffff161015612b3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6d696e2067617320697320323330300000000000000000000000000000000000604482015290519081900360640190fd5b622625a08563ffffffff161115612bb157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6d61782067617320697320323530303030300000000000000000000000000000604482015290519081900360640190fd5b506003546040805160c08101825273ffffffffffffffffffffffffffffffffffffffff808916825263ffffffff808916602080850191825260008587018181528b86166060880190815267ffffffffffffffff6080890181815260a08a018581528c8652600687528b86209a518b54985190991674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff998b167fffffffffffffffffffffffff000000000000000000000000000000000000000090991698909817989098169690961789559151600189018054925189166c01000000000000000000000000026bffffffffffffffffffffffff9283167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090941693909317909116919091179055925160029096018054945190951668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff969093167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416939093179490941617909155600990915220612d6d908484614062565b506003805460010190556040805163ffffffff8716815273ffffffffffffffffffffffffffffffffffffffff86166020820152815183927fbae366358c023f887e791d7a62f2e4316f1026bd77f6fb49501a917b3bc5d012928290030190a295945050505050565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260076020526040902054163314612e6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792063616c6c61626c6520627920706179656500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116331415612eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff828116600090815260086020526040902054811690821614612f9b5773ffffffffffffffffffffffffffffffffffffffff82811660008181526008602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169486169485179055513392917f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836791a45b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461302557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60035490565b600060028054141561311457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600280556020820151613126816138da565b825173ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090206001015460ff166131be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c7920616374697665206b65657065727300000000000000000000000000604482015290519081900360640190fd5b6020838101516000908152600682526040808220815160c081018352815473ffffffffffffffffffffffffffffffffffffffff80821683527401000000000000000000000000000000000000000090910463ffffffff1695820186905260018301546bffffffffffffffffffffffff8116948301949094526c010000000000000000000000009093048316606082015260029091015467ffffffffffffffff8116608083015268010000000000000000900490911660a0820152919080613283613adc565b915091503a821315613293573a91505b60006132a0848484613ca7565b9050806bffffffffffffffffffffffff1685604001516bffffffffffffffffffffffff16101561333157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e74207061796d656e74000000000000000000000000604482015290519081900360640190fd5b876000015173ffffffffffffffffffffffffffffffffffffffff168560a0015173ffffffffffffffffffffffffffffffffffffffff1614156133d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6b656570657273206d7573742074616b65207475726e73000000000000000000604482015290519081900360640190fd5b60005a90506000634585e33b60e01b8a604001516040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015613428578181015183820152602001613410565b50505050905090810190601f1680156134555780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090961695909517909452505088519192506134e79188915083613e0a565b98505a820391506134f9828686613ca7565b6040880151909350613519906bffffffffffffffffffffffff1684613e56565b87604001906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff168152505089600001518760a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086600660008c60200151815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600061377a84600760008e6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1661396890919063ffffffff16565b905080600760008d6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a6000015173ffffffffffffffffffffffffffffffffffffffff168a15158c602001517fcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6878f6040015160405180836bffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561388c578181015183820152602001613874565b50505050905090810190601f1680156138b95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a45050505050505050506001600255919050565b6000818152600660205260409020600201544367ffffffffffffffff9091161161396557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f696e76616c69642075706b656570206964000000000000000000000000000000604482015290519081900360640190fd5b50565b60008282016bffffffffffffffffffffffff80851690821610156139ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082821115613a6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b3215613ada57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c7920666f722073696d756c61746564206261636b656e64000000000000604482015290519081900360640190fd5b565b600a54604080517ffeaf968c000000000000000000000000000000000000000000000000000000008152905160009283926b01000000000000000000000090910462ffffff16918215159184917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163feaf968c9160048083019260a0929190829003018186803b158015613b8657600080fd5b505afa158015613b9a573d6000803e3d6000fd5b505050506040513d60a0811015613bb057600080fd5b5060208101516060909101519095509050818015613bd557508042038363ffffffff16105b15613be057600b5494505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015613c4657600080fd5b505afa158015613c5a573d6000803e3d6000fd5b505050506040513d60a0811015613c7057600080fd5b5060208101516060909101519094509050818015613c9557508042038363ffffffff16105b15613ca057600c5493505b5050509091565b600080613cc1613cba8662013880613d90565b8590613ee3565b600a54909150600090613ce390633b9aca009063ffffffff90811690613d9016565b90506000613d0985613d0384613cfd87633b9aca00613ee3565b90613ee3565b90613f56565b90506b033b2e3c9fd0803ce8000000811115613d8657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f7061796d656e742067726561746572207468616e20616c6c204c494e4b000000604482015290519081900360640190fd5b9695505050505050565b6000828201838110156139ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3b151590565b60005a611388811015613e1c57600080fd5b611388810390508460408204820311613e3457600080fd5b50823b613e4057600080fd5b60008083516020850160008789f1949350505050565b6000826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161115613a6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b600082613ef2575060006139f0565b82820282848281613eff57fe5b04146139ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141126021913960400191505060405180910390fd5b6000808211613fc657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481613fd157fe5b04949350505050565b828054828255906000526020600020908101928215614052579160200282015b828111156140525781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190613ffa565b5061405e9291506140fc565b5090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826140985760008555614052565b82601f106140cf578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555614052565b82800160010185558215614052579182015b828111156140525782358255916020019190600101906140e1565b5b8082111561405e57600081556001016140fd56fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208c0c2e852348e21082acacb50cfa335e17b21c47523d9034b739dff966432a8e64736f6c63430007060033000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000dc530d9457755926550b59e8eccdae7624181557000000000000000000000000169e633a2d1e6c10dd91238ba11c4a708dfef37c000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000044aa200000000000000000000000000000000000000000000000000000000000015f900000000000000000000000000000000000000000000000000000002e90edd00000000000000000000000000000000000000000000000000000470de4df820000