0 txs
79.5k calls
constructor
constructor(address _messageTransmitter, uint32 _messageBodyVersion)
functions
denylister
viewfunction denylister() view returns (address)
feeRecipient
viewfunction feeRecipient() view returns (address)
initializedVersion
viewfunction initializedVersion() view returns (uint64)
isDenylisted
viewfunction isDenylisted(address account) view returns (bool)
localMessageTransmitter
viewfunction localMessageTransmitter() view returns (address)
localMinter
viewfunction localMinter() view returns (address)
messageBodyVersion
viewfunction messageBodyVersion() view returns (uint32)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
remoteTokenMessengers
viewfunction remoteTokenMessengers(uint32) view returns (bytes32)
rescuer
viewfunction rescuer() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addLocalMinter
nonpayablefunction addLocalMinter(address newLocalMinter)
addRemoteTokenMessenger
nonpayablefunction addRemoteTokenMessenger(uint32 domain, bytes32 tokenMessenger)
denylist
nonpayablefunction denylist(address account)
depositForBurn
nonpayablefunction depositForBurn(uint256 amount, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, bytes32 destinationCaller, uint256 maxFee, uint32 minFinalityThreshold)
depositForBurnWithHook
nonpayablefunction depositForBurnWithHook(uint256 amount, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, bytes32 destinationCaller, uint256 maxFee, uint32 minFinalityThreshold, bytes hookData)
handleReceiveFinalizedMessage
nonpayablefunction handleReceiveFinalizedMessage(uint32 remoteDomain, bytes32 sender, uint32, bytes messageBody) returns (bool)
handleReceiveUnfinalizedMessage
nonpayablefunction handleReceiveUnfinalizedMessage(uint32 remoteDomain, bytes32 sender, uint32 finalityThresholdExecuted, bytes messageBody) returns (bool)
initialize
nonpayablefunction initialize(address owner_, address rescuer_, address feeRecipient_, address denylister_, address tokenMinter_, uint32[] remoteDomains_, bytes32[] remoteTokenMessengers_)
removeLocalMinter
nonpayablefunction removeLocalMinter()
removeRemoteTokenMessenger
nonpayablefunction removeRemoteTokenMessenger(uint32 domain)
rescueERC20
nonpayablefunction rescueERC20(address tokenContract, address to, uint256 amount)
setFeeRecipient
nonpayablefunction setFeeRecipient(address _feeRecipient)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unDenylist
nonpayablefunction unDenylist(address account)
updateDenylister
nonpayablefunction updateDenylister(address newDenylister)
updateRescuer
nonpayablefunction updateRescuer(address newRescuer)
events
Denylisted
event Denylisted(address indexed account)
DenylisterChanged
event DenylisterChanged(address indexed oldDenylister, address indexed newDenylister)
DepositForBurn
event DepositForBurn(address indexed burnToken, uint256 amount, address indexed depositor, bytes32 mintRecipient, uint32 destinationDomain, bytes32 destinationTokenMessenger, bytes32 destinationCaller, uint256 maxFee, uint32 indexed minFinalityThreshold, bytes hookData)
FeeRecipientSet
event FeeRecipientSet(address feeRecipient)
Initialized
event Initialized(uint64 version)
LocalMinterAdded
event LocalMinterAdded(address localMinter)
LocalMinterRemoved
event LocalMinterRemoved(address localMinter)
MintAndWithdraw
event MintAndWithdraw(address indexed mintRecipient, uint256 amount, address indexed mintToken, uint256 feeCollected)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
RemoteTokenMessengerAdded
event RemoteTokenMessengerAdded(uint32 domain, bytes32 tokenMessenger)
RemoteTokenMessengerRemoved
event RemoteTokenMessengerRemoved(uint32 domain, bytes32 tokenMessenger)
RescuerChanged
event RescuerChanged(address indexed newRescuer)
UnDenylisted
event UnDenylisted(address indexed account)
errors
No errors.
creation bytecode
0x60c06040523480156200001157600080fd5b5060405162003cd538038062003cd5833981810160405260408110156200003757600080fd5b50805160209091015181816200005662000050620000e7565b620000eb565b6001600160a01b038216620000b2576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167655472616e736d6974746572206e6f7420736574000000000000604482015290519081900360640190fd5b60609190911b6001600160601b03191660805260e01b6001600160e01b03191660a052620000df62000115565b505062000248565b3390565b600180546001600160a01b03191690556200011281620001d4602090811b6200153117901c565b50565b60006200012162000224565b805490915068010000000000000000900460ff1615620001735760405162461bcd60e51b815260040180806020018281038252602581526020018062003cb06025913960400191505060405180910390fd5b80546001600160401b0390811614620001125780546001600160401b0319166001600160401b03908117825560408051918252517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29181900360200190a150565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b60805160601c60a05160e01c613a2a620002866000398061124252806119ec528061227452508061097a52806115d85280611a415250613a2a6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638fb2ea65116100f9578063cb75c11c11610097578063e74b981b11610071578063e74b981b1461076a578063e877a5261461079d578063f2fde38b146107d0578063f79fd08e14610803576101c4565b8063cb75c11c14610731578063da87e44814610739578063e30c397814610762576101c4565b80639cdbb181116100d35780639cdbb18114610692578063a946de04146106b3578063b2118a8d146106e6578063bcc76c6014610729576101c4565b80638fb2ea651461055757806391f17888146106575780639cab0c1c1461065f576101c4565b8063779b432d116101665780638197beb9116101405780638197beb91461048857806382a5e665146104bb5780638da5cb5b146104f05780638e0250ee146104f8576101c4565b8063779b432d1461033757806379ba5097146103f45780637c92f219146103fc576101c4565b80632c121921116101a25780632c121921146102c35780633371bfff146102f457806338a6318314610327578063469048401461032f576101c4565b806308828eb7146101c957806311cffb67146101ee5780632ab600451461028e575b600080fd5b6101d1610826565b6040805167ffffffffffffffff9092168252519081900360200190f35b61027a6004803603608081101561020457600080fd5b63ffffffff823581169260208101359260408201359092169181019060808101606082013564010000000081111561023b57600080fd5b82018360208201111561024d57600080fd5b8035906020019184600183028401116401000000008311171561026f57600080fd5b509092509050610835565b604080519115158252519081900360200190f35b6102c1600480360360208110156102a457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610964565b005b6102cb610978565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102c16004803603602081101561030a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661099c565b6102cb610a5e565b6102cb610a7a565b6102c1600480360361010081101561034e57600080fd5b81359163ffffffff602082013581169260408301359273ffffffffffffffffffffffffffffffffffffffff6060820135169260808201359260a08301359260c08101359092169190810190610100810160e08201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610a96565b6102c1610b37565b61027a6004803603608081101561041257600080fd5b63ffffffff823581169260208101359260408201359092169181019060808101606082013564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b509092509050610bd7565b6102c16004803603602081101561049e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d24565b6104de600480360360208110156104d157600080fd5b503563ffffffff16610d35565b60408051918252519081900360200190f35b6102cb610d47565b6102c1600480360360e081101561050e57600080fd5b5080359063ffffffff602082013581169160408101359173ffffffffffffffffffffffffffffffffffffffff6060830135169160808101359160a08201359160c0013516610d63565b6102c1600480360360e081101561056d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101358216926040820135831692606083013581169260808101359091169181019060c0810160a08201356401000000008111156105c657600080fd5b8201836020820111156105d857600080fd5b803590602001918460208302840111640100000000831117156105fa57600080fd5b91939092909160208101903564010000000081111561061857600080fd5b82018360208201111561062a57600080fd5b8035906020019184602083028401116401000000008311171561064c57600080fd5b509092509050610da0565b6102c161107e565b6102c16004803603602081101561067557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661117f565b61069a611240565b6040805163ffffffff9092168252519081900360200190f35b6102c1600480360360208110156106c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611264565b6102c1600480360360608110156106fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611275565b6102cb61130b565b6102cb611327565b6102c16004803603604081101561074f57600080fd5b5063ffffffff8135169060200135611343565b6102cb611359565b6102c16004803603602081101561078057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611375565b61027a600480360360208110156107b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611386565b6102c1600480360360208110156107e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113b5565b6102c16004803603602081101561081957600080fd5b503563ffffffff1661144d565b60006108306115a6565b905090565b600061083f6115c0565b6108aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206d657373616765207472616e736d69747465720000000000604482015290519081900360640190fd5b85856108b682826115fc565b61090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138866021913960400191505060405180910390fd5b610958610952600087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061162a9050565b8961164e565b98975050505050505050565b61096c611683565b6109758161172d565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061399a6026913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822060019055517ffa4507bc1f9c730e6e95897024f1fe7d576cf2deb53579d55c14f1ac3439e1149190a250565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b601b5473ffffffffffffffffffffffffffffffffffffffff1681565b610a9f33611808565b333214610aaf57610aaf32611808565b80610b1b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f486f6f6b206461746120697320656d7074790000000000000000000000000000604482015290519081900360640190fd5b610b2c898989898989898989611884565b505050505050505050565b6000610b41611c4e565b90508073ffffffffffffffffffffffffffffffffffffffff16610b62611359565b73ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806137de6029913960400191505060405180910390fd5b61097581611c52565b6000610be16115c0565b610c4c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206d657373616765207472616e736d69747465720000000000604482015290519081900360640190fd5b8585610c5882826115fc565b610cad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138866021913960400191505060405180910390fd5b6101f463ffffffff8716101561090b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e737570706f727465642066696e616c697479207468726573686f6c640000604482015290519081900360640190fd5b610d2c611683565b61097581611c83565b601a6020526000908152604090205481565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b610d6c33611808565b333214610d7c57610d7c32611808565b366000610d8b8180848161376d565b91509150610b2c898989898989898989611884565b6000610daa611e03565b805490915060ff68010000000000000000820416159067ffffffffffffffff16600081158015610dd75750825b905060008267ffffffffffffffff166001148015610dfb5750610df930611e27565b155b90508180610e065750805b610e5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806137b96025913960400191505060405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610ebc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff8e16610f3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f776e657220697320746865207a65726f206164647265737300000000000000604482015290519081900360640190fd5b878614610f96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137966023913960400191505060405180910390fd5b610f9f8e611c52565b610fa88d61172d565b610fb18b611e2d565b610fba8c611f10565b610fc38a611c83565b8760005b8181101561100b576110038b8b83818110610fde57fe5b9050602002013563ffffffff168a8a84818110610ff757fe5b9050602002013561200b565b600101610fc7565b5050831561106e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604080516001815290517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29181900360200190a15b5050505050505050505050505050565b611086611683565b60195473ffffffffffffffffffffffffffffffffffffffff168061110b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206c6f63616c206d696e746572206973207365742e000000000000000000604482015290519081900360640190fd5b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f2db49fbf671271826a27b02ebc496209c85fffffb4bccc67430d2a0f22b4d1ac9181900360200190a150565b60035473ffffffffffffffffffffffffffffffffffffffff1633146111ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061399a6026913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260046020526040808220829055517fc904e1b03de0c20d7fcf9dbd056daf1bd3815e93f251199de815fd0f0b96e1669190a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b61126c611683565b61097581611e2d565b60025473ffffffffffffffffffffffffffffffffffffffff1633146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806138ee6024913960400191505060405180910390fd5b61130673ffffffffffffffffffffffffffffffffffffffff8416838361214f565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b60195473ffffffffffffffffffffffffffffffffffffffff1681565b61134b611683565b611355828261200b565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61137d611683565b61097581611f10565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260409020546001145b919050565b6113bd611683565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155611408610d47565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611455611683565b63ffffffff81166000908152601a60205260409020546114d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f20546f6b656e4d657373656e676572207365740000000000000000000000604482015290519081900360640190fd5b63ffffffff81166000818152601a6020908152604080832080549390558051938452908301829052805191927f3dcea012093dbca2bb8ed7fd2b2ff90305ab70bddda8bbb94d4152735a98f0b1929081900390910190a15050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006115b0611e03565b5467ffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161490565b60008115801590611621575063ffffffff83166000908152601a602052604090205482145b90505b92915050565b81516000906020840161164564ffffffffff851682846121dc565b95945050505050565b600080600080600061165f8761223d565b935093509350935061167686848684860385612595565b5060019695505050505050565b61168b611c4e565b73ffffffffffffffffffffffffffffffffffffffff166116a9610d47565b73ffffffffffffffffffffffffffffffffffffffff161461172b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b73ffffffffffffffffffffffffffffffffffffffff8116611799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061382c602a913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205415610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061394c6024913960400191505060405180910390fd5b600089116118f357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f416d6f756e74206d757374206265206e6f6e7a65726f00000000000000000000604482015290519081900360640190fd5b8661195f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e7420726563697069656e74206d757374206265206e6f6e7a65726f0000604482015290519081900360640190fd5b8884106119cd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d617820666565206d757374206265206c657373207468616e20616d6f756e74604482015290519081900360640190fd5b60006119d8896127ab565b90506119e587338c61282d565b6000611a3d7f0000000000000000000000000000000000000000000000000000000000000000611a2a8a73ffffffffffffffffffffffffffffffffffffffff166129d9565b8b8e611a35336129d9565b8b8a8a6129f2565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166314b157ab8b848a89866040518663ffffffff1660e01b8152600401808663ffffffff1681526020018581526020018481526020018363ffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611af0578181015183820152602001611ad8565b50505050905090810190601f168015611b1d5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015611b4057600080fd5b505af1158015611b54573d6000803e3d6000fd5b505050508463ffffffff163373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f0c8c1cbdc5190613ebd485511d4e2812cfa45eecb79d845893331fedad5130a58e8d8f888e8e8d8d604051808981526020018881526020018763ffffffff168152602001868152602001858152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039b50909950505050505050505050a45050505050505050505050565b3390565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561097581611531565b73ffffffffffffffffffffffffffffffffffffffff8116611d0557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015290519081900360640190fd5b60195473ffffffffffffffffffffffffffffffffffffffff1615611d8a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c6f63616c206d696e74657220697320616c7265616479207365742e00000000604482015290519081900360640190fd5b6019805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f109bb3e70cbf1931e295b49e75c67013b85ff80d64e6f1d321f37157b90c38309181900360200190a150565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b3b151590565b73ffffffffffffffffffffffffffffffffffffffff8116611e99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806138566030913960400191505060405180910390fd5b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907fe144e84038182cefebda68c192c222085b2c12a85d135d3c938498c0165c01d390600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8116611f9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015290519081900360640190fd5b601b805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fbf9a9534339a9d6b81696e05dcfb614b7dc518a31d48be3cfb757988381fb3239181900360200190a150565b8061207757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f62797465733332283029206e6f7420616c6c6f77656400000000000000000000604482015290519081900360640190fd5b63ffffffff82166000908152601a6020526040902054156120f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e4d657373656e67657220616c726561647920736574000000000000604482015290519081900360640190fd5b63ffffffff82166000818152601a60209081526040918290208490558151928352820183905280517f4bba2b08298cf59661b4895e384cc2ac3962ce2d71f1b7c11bca52e1169f95999281900390910190a15050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611306908490612a75565b6000806121e98484612b4d565b90506040518111156121f9575060005b80612227577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050612236565b612232858585612bbf565b9150505b9392505050565b600080808061226d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612bd2565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166122bf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612d10565b63ffffffff161461233157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206d65737361676520626f64792076657273696f6e00000000604482015290519081900360640190fd5b600061235e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612d3d565b905080158061236c57504381115b6123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138076025913960400191505060405180910390fd5b6123ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612d6e565b92506124197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612d9b565b915081158061242757508282105b61249257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f46656520657175616c73206f72206578636565647320616d6f756e7400000000604482015290519081900360640190fd5b6124bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612dcc565b82111561252b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4665652065786365656473206d61782066656500000000000000000000000000604482015290519081900360640190fd5b61255e6125597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816612dfd565b612e2a565b945061258b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612e2d565b9350509193509193565b600061259f612e5a565b90506000821561267a57601b54604080517f8dfcfa9000000000000000000000000000000000000000000000000000000000815263ffffffff8a1660048201526024810189905273ffffffffffffffffffffffffffffffffffffffff888116604483015292831660648201526084810187905260a48101869052905191841691638dfcfa909160c4808201926020929091908290030181600087803b15801561264757600080fd5b505af115801561265b573d6000803e3d6000fd5b505050506040513d602081101561267157600080fd5b50519050612735565b604080517fd54de06f00000000000000000000000000000000000000000000000000000000815263ffffffff891660048201526024810188905273ffffffffffffffffffffffffffffffffffffffff87811660448301526064820187905291519184169163d54de06f916084808201926020929091908290030181600087803b15801561270657600080fd5b505af115801561271a573d6000803e3d6000fd5b505050506040513d602081101561273057600080fd5b505190505b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f50c55e915134d457debfa58eb6f4342956f8b0616d51a89a3659360178e1ab638686604051808381526020018281526020019250505060405180910390a350505050505050565b63ffffffff81166000908152601a60205260408120548061162457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4e6f20546f6b656e4d657373656e67657220666f7220646f6d61696e00000000604482015290519081900360640190fd5b6000612837612e5a565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015280841660248301526044820186905291519293508692918316916323b872dd916064808201926020929091908290030181600087803b1580156128bd57600080fd5b505af11580156128d1573d6000803e3d6000fd5b505050506040513d60208110156128e757600080fd5b505161295457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5472616e73666572206f7065726174696f6e206661696c656400000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16639dc29fac86856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156129c557600080fd5b505af1158015610b2c573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b60608888888888886000808a8a604051602001808b63ffffffff1660e01b81526004018a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838380828437808301925050509a5050505050505050505050604051602081830303815290604052905098975050505050505050565b6000612ad7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612efe9092919063ffffffff16565b80519091501561130657808060200190516020811015612af657600080fd5b5051611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613970602a913960400191505060405180910390fd5b8181018281101561162457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b612bfd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216612f15565b612c6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b60e4612c957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612f52565b6bffffffffffffffffffffffff16101561097557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964206275726e206d6573736167653a20746f6f2073686f727400604482015290519081900360640190fd5b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612f66565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660c46020612f92565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612fb3565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660a46020612f92565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660846020612f92565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612fe4565b90565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316613015565b60195460009073ffffffffffffffffffffffffffffffffffffffff16612ee157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f63616c206d696e746572206973206e6f7420736574000000000000000000604482015290519081900360640190fd5b5060195473ffffffffffffffffffffffffffffffffffffffff1690565b6060612f0d8484600085613046565b949350505050565b6000612f2082613200565b64ffffffffff1664ffffffffff1415612f3b575060006113b0565b6000612f4683613206565b60405110159392505050565b60181c6bffffffffffffffffffffffff1690565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083168260045b60008160200360080260ff16612fa9858585613230565b901c949350505050565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660446020612f92565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246020613230565b60006116247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660046020613230565b6060824710156130a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806138a76026913960400191505060405180910390fd5b6130aa85611e27565b61311557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061317e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613141565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131e0576040519150601f19603f3d011682016040523d82523d6000602084013e6131e5565b606091505b50915091506131f58282866133db565b979650505050505050565b60d81c90565b600061321182612f52565b61321a8361345b565b016bffffffffffffffffffffffff169050919050565b600060ff821661324257506000612236565b61324b84612f52565b6bffffffffffffffffffffffff166132668460ff8516612b4d565b1115613345576132a76132788561345b565b6bffffffffffffffffffffffff1661328f86612f52565b6bffffffffffffffffffffffff16858560ff1661346f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561330a5781810151838201526020016132f2565b50505050905090810190601f1680156133375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff1611156133a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613912603a913960400191505060405180910390fd5b6008820260006133b18661345b565b6bffffffffffffffffffffffff16905060006133cc836135ca565b91909501511695945050505050565b606083156133ea575081612236565b8251156133fa5782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561330a5781810151838201526020016132f2565b60781c6bffffffffffffffffffffffff1690565b6060600061347c86613613565b915050600061348a86613613565b915050600061349886613613565b91505060006134a686613613565b9150508383838360405160200180806139c0603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a82015260500160216138cd82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600080601f5b600f8160ff16111561367b5760ff600882021684901c613638816136e7565b61ffff16841793508160ff1660101461365357601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613619565b50600f5b60ff8160ff1610156136e15760ff600882021684901c61369e816136e7565b61ffff16831792508160ff166000146136b957601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161367f565b50915091565b60006136f960048360ff16901c613717565b60ff161760081b62ffff001661370e82613717565b60ff1617919050565b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f8416918290811061375e57fe5b016020015160f81c9392505050565b6000808585111561377c578182fd5b83861115613788578182fd5b505082019391909203915056fe496e76616c69642072656d6f746520646f6d61696e20636f6e66696775726174696f6e496e697469616c697a61626c653a20696e76616c696420696e697469616c697a6174696f6e4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e65724d657373616765206578706972656420616e64206d7573742062652072652d7369676e6564526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737344656e796c69737461626c653a206e65772064656e796c697374657220697320746865207a65726f206164647265737352656d6f746520546f6b656e4d657373656e67657220756e737570706f72746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c2e20417474656d7074656420746f20696e646578206174206f6666736574203078526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657254797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657344656e796c69737461626c653a206163636f756e74206973206f6e2064656e796c6973745361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656444656e796c69737461626c653a2063616c6c6572206973206e6f742064656e796c697374657254797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212207b423e38b2ca7fd7eba562928fa97745c640180aae74bf81d48903a7e2c6f0cd64736f6c63430007060033496e697469616c697a61626c653a20696e76616c696420696e697469616c697a6174696f6e00000000000000000000000081d40f21f12a8f0e3252bccb954d722d4c464b640000000000000000000000000000000000000000000000000000000000000001