From 1e907e9e16c19c5dcdd95811ad267ffa6dd0b30f Mon Sep 17 00:00:00 2001 From: "app-token-issuer-infra-releng[bot]" <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2024 00:44:13 +0000 Subject: [PATCH] Update gethwrappers --- .../ccip/generated/ccipClient/ccipClient.go | 18 +++++++++--------- .../generated/ccipReceiver/ccipReceiver.go | 18 +++++++++--------- .../ccip/generated/ccipSender/ccipSender.go | 16 ++++++++-------- .../generated/ping_pong_demo/ping_pong_demo.go | 18 +++++++++--------- .../self_funded_ping_pong.go | 18 +++++++++--------- ...wrapper-dependency-versions-do-not-edit.txt | 12 ++++++------ 6 files changed, 50 insertions(+), 50 deletions(-) diff --git a/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go b/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go index 1b906234e0..46b239bdb2 100644 --- a/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go +++ b/core/gethwrappers/ccip/generated/ccipClient/ccipClient.go @@ -49,8 +49,8 @@ type ClientEVMTokenAmount struct { } var CCIPClientMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"modifyFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620045573803806200455783398101604081905262000034916200055f565b8181818033806000816200008f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c257620000c2816200013b565b5050506001600160a01b038116620000ed576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03908116608052600780546001600160a01b03191691841691821790551590506200013157620001316001600160a01b03821683600019620001e6565b5050505062000684565b336001600160a01b03821603620001955760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000086565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e91906200059e565b6200026a9190620005b8565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002c691869190620002cc16565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200031b906001600160a01b038516908490620003a2565b8051909150156200039d57808060200190518101906200033c9190620005e0565b6200039d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000086565b505050565b6060620003b38484600085620003bb565b949350505050565b6060824710156200041e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000086565b600080866001600160a01b031685876040516200043c919062000631565b60006040518083038185875af1925050503d80600081146200047b576040519150601f19603f3d011682016040523d82523d6000602084013e62000480565b606091505b50909250905062000494878383876200049f565b979650505050505050565b60608315620005135782516000036200050b576001600160a01b0385163b6200050b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000086565b5081620003b3565b620003b383838151156200052a5781518083602001fd5b8060405162461bcd60e51b81526004016200008691906200064f565b6001600160a01b03811681146200055c57600080fd5b50565b600080604083850312156200057357600080fd5b8251620005808162000546565b6020840151909250620005938162000546565b809150509250929050565b600060208284031215620005b157600080fd5b5051919050565b80820180821115620005da57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005f357600080fd5b815180151581146200060457600080fd5b9392505050565b60005b83811015620006285781810151838201526020016200060e565b50506000910152565b60008251620006458184602087016200060b565b9190910192915050565b6020815260008251806020840152620006708160408501602087016200060b565b601f01601f19169190910160400192915050565b608051613e7f620006d86000396000818161047a015281816105d4015281816106640152818161111501528181611bda01528181611ca301528181611d7b015281816125fb01526126c70152613e7f6000f3fe6080604052600436106101845760003560e01c80636fef519e116100d6578063cf6730f81161007f578063e89b448511610059578063e89b4485146104fe578063f2fde38b14610511578063ff2deec31461053157600080fd5b8063cf6730f81461049e578063d8469e40146104be578063e4ca8754146104de57600080fd5b806385572ffb116100b057806385572ffb146103ff5780638da5cb5b1461041f578063b0f479a11461046b57600080fd5b80636fef519e1461038157806379ba5097146103ca5780638462a2b9146103df57600080fd5b806341eade46116101385780635e35359e116101125780635e35359e146103145780636939cd97146103345780636d62d6331461036157600080fd5b806341eade46146102a65780635075a9d4146102c6578063536c6bfa146102f457600080fd5b806311e85dff1161016957806311e85dff14610206578063181f5a771461022857806335f170ef1461027757600080fd5b806305bfe982146101905780630e958d6b146101d657600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506101c06101ab366004612d33565b60086020526000908152604090205460ff1681565b6040516101cd9190612d7b565b60405180910390f35b3480156101e257600080fd5b506101f66101f1366004612e1b565b61055e565b60405190151581526020016101cd565b34801561021257600080fd5b50610226610221366004612e92565b6105a9565b005b34801561023457600080fd5b5060408051808201909152601481527f43434950436c69656e7420312e302e302d64657600000000000000000000000060208201525b6040516101cd9190612f1d565b34801561028357600080fd5b50610297610292366004612f30565b610721565b6040516101cd93929190612f4d565b3480156102b257600080fd5b506102266102c1366004612f30565b610858565b3480156102d257600080fd5b506102e66102e1366004612d33565b6108a3565b6040519081526020016101cd565b34801561030057600080fd5b5061022661030f366004612f84565b6108b6565b34801561032057600080fd5b5061022661032f366004612fb0565b6108cc565b34801561034057600080fd5b5061035461034f366004612d33565b6108fa565b6040516101cd919061304e565b34801561036d57600080fd5b5061022661037c3660046130eb565b610b05565b34801561038d57600080fd5b5061026a6040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b3480156103d657600080fd5b50610226610e1f565b3480156103eb57600080fd5b506102266103fa366004613160565b610f1c565b34801561040b57600080fd5b5061022661041a3660046131cc565b6110fd565b34801561042b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cd565b34801561047757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610446565b3480156104aa57600080fd5b506102266104b93660046131cc565b6113f8565b3480156104ca57600080fd5b506102266104d9366004613207565b611615565b3480156104ea57600080fd5b506102266104f9366004612d33565b611696565b6102e661050c3660046133f0565b6118ff565b34801561051d57600080fd5b5061022661052c366004612e92565b611e83565b34801561053d57600080fd5b506007546104469073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260026020526040808220905160039091019061058d90859085906134fd565b9081526040519081900360200190205460ff1690509392505050565b6105b1611e97565b60075473ffffffffffffffffffffffffffffffffffffffff1615610614576106147f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16906000611f1a565b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093551690156106c3576106c37f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61211a565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4a1cb6b940121ea2ba30fb9b494035cbfe2d4b6b080db8b502150410bef7eb4e60405160405180910390a35050565b6002602052600090815260409020805460018201805460ff90921692916107479061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546107739061350d565b80156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b5050505050908060020180546107d59061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546108019061350d565b801561084e5780601f106108235761010080835404028352916020019161084e565b820191906000526020600020905b81548152906001019060200180831161083157829003601f168201915b5050505050905083565b610860611e97565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60006108b060048361221e565b92915050565b6108be611e97565b6108c88282612231565b5050565b6108d4611e97565b6108f573ffffffffffffffffffffffffffffffffffffffff8416838361238b565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff16918301919091526002810180549394929391928401916109699061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546109959061350d565b80156109e25780601f106109b7576101008083540402835291602001916109e2565b820191906000526020600020905b8154815290600101906020018083116109c557829003601f168201915b505050505081526020016003820180546109fb9061350d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a279061350d565b8015610a745780601f10610a4957610100808354040283529160200191610a74565b820191906000526020600020905b815481529060010190602001808311610a5757829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610af75760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610aa2565b505050915250909392505050565b610b0d611e97565b6001610b1a60048461221e565b14610b59576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610b698260025b600491906123e1565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610bb19061350d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdd9061350d565b8015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b50505050508152602001600382018054610c439061350d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6f9061350d565b8015610cbc5780601f10610c9157610100808354040283529160200191610cbc565b820191906000526020600020905b815481529060010190602001808311610c9f57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d3f5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610cea565b5050505081525050905060005b816080015151811015610dce57610dc68383608001518381518110610d7357610d73613560565b60200260200101516020015184608001518481518110610d9557610d95613560565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1661238b9092919063ffffffff16565b600101610d4c565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610b50565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610f24611e97565b60005b818110156110075760026000848484818110610f4557610f45613560565b9050602002810190610f57919061358f565b610f65906020810190612f30565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600301838383818110610f9c57610f9c613560565b9050602002810190610fae919061358f565b610fbc9060208101906135cd565b604051610fca9291906134fd565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101610f27565b5060005b838110156110f65760016002600087878581811061102b5761102b613560565b905060200281019061103d919061358f565b61104b906020810190612f30565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060030186868481811061108257611082613560565b9050602002810190611094919061358f565b6110a29060208101906135cd565b6040516110b09291906134fd565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905560010161100b565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461116e576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610b50565b61117e6040820160208301612f30565b61118b60408301836135cd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260026020526040908190209051600390910193506111e99250849150613632565b9081526040519081900360200190205460ff1661123457806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610b509190612f1d565b6112446040840160208501612f30565b67ffffffffffffffff8116600090815260026020526040902060018101805461126c9061350d565b1590508061127b5750805460ff165b156112be576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610b50565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906112fa908890600401613746565b600060405180830381600087803b15801561131457600080fd5b505af1925050508015611325575060015b6113c5573d808015611353576040519150601f19603f3d011682016040523d82523d6000602084013e611358565b606091505b5061136586356001610b60565b508535600090815260036020526040902086906113828282613b18565b50506040518635907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906113b7908490612f1d565b60405180910390a2506110f6565b6040518535907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25050505050565b333014611431576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061144060608301836135cd565b81019061144d9190613c12565b905060008160400151600181111561146757611467612d4c565b03611475576108c8826123f6565b60018160400151600181111561148d5761148d612d4c565b036108c85760008082602001518060200190518101906114ad9190613cbe565b60408051808201909152601581527f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000060209182015282519083012091935091507f1c778f21871bcc06cfebd177c4d0360c2f3550962fb071f69ed007e4f55f23b214611545576040517fae15168d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008281526008602052604090205460ff16600281111561156a5761156a612d4c565b146115a4576040517f3ec8770000000000000000000000000000000000000000000000000000000000815260048101829052602401610b50565b60008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600217905590518281527fef0cb160d3dc564cde61ae97d9981f9c4d92ace727a2ec202b18b223ea832a79910160405180910390a150505050565b61161d611e97565b67ffffffffffffffff851660009081526002602052604090206001810161164585878361389c565b50811561165d576002810161165b83858361389c565b505b805460ff161561168e5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681555b505050505050565b61169e611e97565b60016116ab60048361221e565b146116e5576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610b50565b6116f0816000610b60565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff169381019390935260028101805491928401916117389061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546117649061350d565b80156117b15780601f10611786576101008083540402835291602001916117b1565b820191906000526020600020905b81548152906001019060200180831161179457829003601f168201915b505050505081526020016003820180546117ca9061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546117f69061350d565b80156118435780601f1061181857610100808354040283529160200191611843565b820191906000526020600020905b81548152906001019060200180831161182657829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156118c65760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611871565b5050505081525050905060405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff831660009081526002602052604081206001810180548692919061192b9061350d565b1590508061193a5750805460ff165b1561197d576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610b50565b6040805160a08101825267ffffffffffffffff88166000908152600260205291822060010180548291906119b09061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546119dc9061350d565b8015611a295780601f106119fe57610100808354040283529160200191611a29565b820191906000526020600020905b815481529060010190602001808311611a0c57829003601f168201915b5050509183525050602080820188905260408083018a905260075473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b16600090815260029283905220018054608090920191611a889061350d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab49061350d565b8015611b015780601f10611ad657610100808354040283529160200191611b01565b820191906000526020600020905b815481529060010190602001808311611ae457829003601f168201915b5050505050815250905060005b8651811015611c6257611b7e3330898481518110611b2e57611b2e613560565b6020026020010151602001518a8581518110611b4c57611b4c613560565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166127a7909392919063ffffffff16565b600754875173ffffffffffffffffffffffffffffffffffffffff90911690889083908110611bae57611bae613560565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614611c5a57611c5a7f0000000000000000000000000000000000000000000000000000000000000000888381518110611c0b57611c0b613560565b602002602001015160200151898481518110611c2957611c29613560565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1661211a9092919063ffffffff16565b600101611b0e565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded90611cda908b908690600401613d3f565b602060405180830381865afa158015611cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1b9190613e02565b60075490915073ffffffffffffffffffffffffffffffffffffffff1615611d6157600754611d619073ffffffffffffffffffffffffffffffffffffffff163330846127a7565b60075473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f9911615611db0576000611db2565b825b8a856040518463ffffffff1660e01b8152600401611dd1929190613d3f565b60206040518083038185885af1158015611def573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e149190613e02565b60008181526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b611e8b611e97565b611e9481612805565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610b50565b565b801580611fba57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb89190613e02565b155b612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610b50565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526108f59084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128fa565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b59190613e02565b6121bf9190613e1b565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506122189085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612098565b50505050565b600061222a8383612a06565b9392505050565b8047101561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b50565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146122f5576040519150601f19603f3d011682016040523d82523d6000602084013e6122fa565b606091505b50509050806108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b50565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526108f59084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612098565b60006123ee848484612a90565b949350505050565b6040805160008082526020820190925281612433565b604080518082019091526000808252602082015281526020019060019003908161240c5790505b50905060006040518060a0016040528084806040019061245391906135cd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080518082018252601581527f4d4553534147455f41434b4e4f574c45444745445f00000000000000000000006020828101919091529151928201926124d49288359101613e2e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152908252602082810186905260075473ffffffffffffffffffffffffffffffffffffffff1683830152606090920191600291600091612544918901908901612f30565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060020180546125749061350d565b80601f01602080910402602001604051908101604052809291908181526020018280546125a09061350d565b80156125ed5780601f106125c2576101008083540402835291602001916125ed565b820191906000526020600020905b8154815290600101906020018083116125d057829003601f168201915b5050505050815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166320487ded8560200160208101906126489190612f30565b846040518363ffffffff1660e01b8152600401612666929190613d3f565b602060405180830381865afa158015612683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a79190613e02565b60075490915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f99116156126fc5760006126fe565b835b61270e6040890160208a01612f30565b866040518463ffffffff1660e01b815260040161272c929190613d3f565b60206040518083038185885af115801561274a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061276f9190613e02565b60405190915081908635907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b237290600090a35050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526122189085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612098565b3373ffffffffffffffffffffffffffffffffffffffff821603612884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610b50565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600061295c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612aad9092919063ffffffff16565b8051909150156108f5578080602001905181019061297a9190613e50565b6108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b50565b600081815260028301602052604081205480151580612a2a5750612a2a8484612abc565b61222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610b50565b600082815260028401602052604081208290556123ee8484612ac8565b60606123ee8484600085612ad4565b600061222a8383612bed565b600061222a8383612c05565b606082471015612b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b50565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b8f9190613632565b60006040518083038185875af1925050503d8060008114612bcc576040519150601f19603f3d011682016040523d82523d6000602084013e612bd1565b606091505b5091509150612be287838387612c54565b979650505050505050565b6000818152600183016020526040812054151561222a565b6000818152600183016020526040812054612c4c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108b0565b5060006108b0565b60608315612cea578251600003612ce35773ffffffffffffffffffffffffffffffffffffffff85163b612ce3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b50565b50816123ee565b6123ee8383815115612cff5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190612f1d565b600060208284031215612d4557600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310612db6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff81168114611e9457600080fd5b60008083601f840112612de457600080fd5b50813567ffffffffffffffff811115612dfc57600080fd5b602083019150836020828501011115612e1457600080fd5b9250929050565b600080600060408486031215612e3057600080fd5b8335612e3b81612dbc565b9250602084013567ffffffffffffffff811115612e5757600080fd5b612e6386828701612dd2565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611e9457600080fd5b600060208284031215612ea457600080fd5b813561222a81612e70565b60005b83811015612eca578181015183820152602001612eb2565b50506000910152565b60008151808452612eeb816020860160208601612eaf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061222a6020830184612ed3565b600060208284031215612f4257600080fd5b813561222a81612dbc565b8315158152606060208201526000612f686060830185612ed3565b8281036040840152612f7a8185612ed3565b9695505050505050565b60008060408385031215612f9757600080fd5b8235612fa281612e70565b946020939093013593505050565b600080600060608486031215612fc557600080fd5b8335612fd081612e70565b92506020840135612fe081612e70565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015613043578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613006565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261308860c0840182612ed3565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526130c48383612ed3565b925060808601519150808584030160a0860152506130e28282612ff1565b95945050505050565b600080604083850312156130fe57600080fd5b82359150602083013561311081612e70565b809150509250929050565b60008083601f84011261312d57600080fd5b50813567ffffffffffffffff81111561314557600080fd5b6020830191508360208260051b8501011115612e1457600080fd5b6000806000806040858703121561317657600080fd5b843567ffffffffffffffff8082111561318e57600080fd5b61319a8883890161311b565b909650945060208701359150808211156131b357600080fd5b506131c08782880161311b565b95989497509550505050565b6000602082840312156131de57600080fd5b813567ffffffffffffffff8111156131f557600080fd5b820160a0818503121561222a57600080fd5b60008060008060006060868803121561321f57600080fd5b853561322a81612dbc565b9450602086013567ffffffffffffffff8082111561324757600080fd5b61325389838a01612dd2565b9096509450604088013591508082111561326c57600080fd5b5061327988828901612dd2565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156132dc576132dc61328a565b60405290565b6040516060810167ffffffffffffffff811182821017156132dc576132dc61328a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561334c5761334c61328a565b604052919050565b600067ffffffffffffffff82111561336e5761336e61328a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126133ab57600080fd5b81356133be6133b982613354565b613305565b8181528460208386010111156133d357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561340557600080fd5b833561341081612dbc565b925060208481013567ffffffffffffffff8082111561342e57600080fd5b818701915087601f83011261344257600080fd5b8135818111156134545761345461328a565b613462848260051b01613305565b81815260069190911b8301840190848101908a83111561348157600080fd5b938501935b828510156134cd576040858c03121561349f5760008081fd5b6134a76132b9565b85356134b281612e70565b81528587013587820152825260409094019390850190613486565b9650505060408701359250808311156134e557600080fd5b50506134f38682870161339a565b9150509250925092565b8183823760009101908152919050565b600181811c9082168061352157607f821691505b60208210810361355a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126135c357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261360257600080fd5b83018035915067ffffffffffffffff82111561361d57600080fd5b602001915036819003821315612e1457600080fd5b600082516135c3818460208701612eaf565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261367957600080fd5b830160208101925035905067ffffffffffffffff81111561369957600080fd5b803603821315612e1457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b8581101561304357813561371481612e70565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613701565b60208152813560208201526000602083013561376181612dbc565b67ffffffffffffffff808216604085015261377f6040860186613644565b925060a0606086015261379660c0860184836136a8565b9250506137a66060860186613644565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808786030160808801526137dc8583856136a8565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301831261381557600080fd5b6020928801928301923591508382111561382e57600080fd5b8160061b360383131561384057600080fd5b8685030160a0870152612be28482846136f1565b601f8211156108f5576000816000526020600020601f850160051c8101602086101561387d5750805b601f850160051c820191505b8181101561168e57828155600101613889565b67ffffffffffffffff8311156138b4576138b461328a565b6138c8836138c2835461350d565b83613854565b6000601f84116001811461391a57600085156138e45750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110f6565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156139695786850135825560209485019460019092019101613949565b50868210156139a4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81356139f081612e70565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b68010000000000000000831115613a5657613a5661328a565b805483825580841015613ae35760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314613a9757613a976139b6565b8086168614613aa857613aa86139b6565b5060008360005260206000208360011b81018760011b820191505b80821015613ade578282558284830155600282019150613ac3565b505050505b5060008181526020812083915b8581101561168e57613b0283836139e5565b6040929092019160029190910190600101613af0565b81358155600181016020830135613b2e81612dbc565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000845416178355613b6e60408601866135cd565b93509150613b8083836002870161389c565b613b8d60608601866135cd565b93509150613b9f83836003870161389c565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018312613bd657600080fd5b918401918235915080821115613beb57600080fd5b506020820191508060061b3603821315613c0457600080fd5b612218818360048601613a3d565b600060208284031215613c2457600080fd5b813567ffffffffffffffff80821115613c3c57600080fd5b9083019060608286031215613c5057600080fd5b613c586132e2565b823582811115613c6757600080fd5b613c738782860161339a565b825250602083013582811115613c8857600080fd5b613c948782860161339a565b6020830152506040830135925060028310613cae57600080fd5b6040810192909252509392505050565b60008060408385031215613cd157600080fd5b825167ffffffffffffffff811115613ce857600080fd5b8301601f81018513613cf957600080fd5b8051613d076133b982613354565b818152866020838501011115613d1c57600080fd5b613d2d826020830160208601612eaf565b60209590950151949694955050505050565b67ffffffffffffffff83168152604060208201526000825160a06040840152613d6b60e0840182612ed3565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080858403016060860152613da78383612ed3565b92506040860151915080858403016080860152613dc48383612ff1565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c086015250612f7a8282612ed3565b600060208284031215613e1457600080fd5b5051919050565b808201808211156108b0576108b06139b6565b604081526000613e416040830185612ed3565b90508260208301529392505050565b600060208284031215613e6257600080fd5b8151801515811461222a57600080fdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"modifyFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60a06040523480156200001157600080fd5b50604051620045603803806200456083398101604081905262000034916200055f565b8181818033806000816200008f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c257620000c2816200013b565b5050506001600160a01b038116620000ed576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03908116608052600780546001600160a01b03191691841691821790551590506200013157620001316001600160a01b03821683600019620001e6565b5050505062000684565b336001600160a01b03821603620001955760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000086565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e91906200059e565b6200026a9190620005b8565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002c691869190620002cc16565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200031b906001600160a01b038516908490620003a2565b8051909150156200039d57808060200190518101906200033c9190620005e0565b6200039d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000086565b505050565b6060620003b38484600085620003bb565b949350505050565b6060824710156200041e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000086565b600080866001600160a01b031685876040516200043c919062000631565b60006040518083038185875af1925050503d80600081146200047b576040519150601f19603f3d011682016040523d82523d6000602084013e62000480565b606091505b50909250905062000494878383876200049f565b979650505050505050565b60608315620005135782516000036200050b576001600160a01b0385163b6200050b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000086565b5081620003b3565b620003b383838151156200052a5781518083602001fd5b8060405162461bcd60e51b81526004016200008691906200064f565b6001600160a01b03811681146200055c57600080fd5b50565b600080604083850312156200057357600080fd5b8251620005808162000546565b6020840151909250620005938162000546565b809150509250929050565b600060208284031215620005b157600080fd5b5051919050565b80820180821115620005da57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005f357600080fd5b815180151581146200060457600080fd5b9392505050565b60005b83811015620006285781810151838201526020016200060e565b50506000910152565b60008251620006458184602087016200060b565b9190910192915050565b6020815260008251806020840152620006708160408501602087016200060b565b601f01601f19169190910160400192915050565b608051613e88620006d86000396000818161047a015281816105d4015281816106640152818161111501528181611bdb01528181611ca401528181611d7c015281816125fc01526126c80152613e886000f3fe6080604052600436106101845760003560e01c80636fef519e116100d6578063cf6730f81161007f578063e89b448511610059578063e89b4485146104fe578063f2fde38b14610511578063ff2deec31461053157600080fd5b8063cf6730f81461049e578063d8469e40146104be578063e4ca8754146104de57600080fd5b806385572ffb116100b057806385572ffb146103ff5780638da5cb5b1461041f578063b0f479a11461046b57600080fd5b80636fef519e1461038157806379ba5097146103ca5780638462a2b9146103df57600080fd5b806341eade46116101385780635e35359e116101125780635e35359e146103145780636939cd97146103345780636d62d6331461036157600080fd5b806341eade46146102a65780635075a9d4146102c6578063536c6bfa146102f457600080fd5b806311e85dff1161016957806311e85dff14610206578063181f5a771461022857806335f170ef1461027757600080fd5b806305bfe982146101905780630e958d6b146101d657600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506101c06101ab366004612d3c565b60086020526000908152604090205460ff1681565b6040516101cd9190612d84565b60405180910390f35b3480156101e257600080fd5b506101f66101f1366004612e24565b61055e565b60405190151581526020016101cd565b34801561021257600080fd5b50610226610221366004612e9b565b6105a9565b005b34801561023457600080fd5b5060408051808201909152601481527f43434950436c69656e7420312e302e302d64657600000000000000000000000060208201525b6040516101cd9190612f26565b34801561028357600080fd5b50610297610292366004612f39565b610721565b6040516101cd93929190612f56565b3480156102b257600080fd5b506102266102c1366004612f39565b610858565b3480156102d257600080fd5b506102e66102e1366004612d3c565b6108a3565b6040519081526020016101cd565b34801561030057600080fd5b5061022661030f366004612f8d565b6108b6565b34801561032057600080fd5b5061022661032f366004612fb9565b6108cc565b34801561034057600080fd5b5061035461034f366004612d3c565b6108fa565b6040516101cd9190613057565b34801561036d57600080fd5b5061022661037c3660046130f4565b610b05565b34801561038d57600080fd5b5061026a6040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b3480156103d657600080fd5b50610226610e1f565b3480156103eb57600080fd5b506102266103fa366004613169565b610f1c565b34801561040b57600080fd5b5061022661041a3660046131d5565b6110fd565b34801561042b57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cd565b34801561047757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610446565b3480156104aa57600080fd5b506102266104b93660046131d5565b6113f8565b3480156104ca57600080fd5b506102266104d9366004613210565b611615565b3480156104ea57600080fd5b506102266104f9366004612d3c565b611696565b6102e661050c3660046133f9565b611900565b34801561051d57600080fd5b5061022661052c366004612e9b565b611e84565b34801561053d57600080fd5b506007546104469073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260026020526040808220905160039091019061058d9085908590613506565b9081526040519081900360200190205460ff1690509392505050565b6105b1611e98565b60075473ffffffffffffffffffffffffffffffffffffffff1615610614576106147f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16906000611f1b565b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093551690156106c3576106c37f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61211b565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4a1cb6b940121ea2ba30fb9b494035cbfe2d4b6b080db8b502150410bef7eb4e60405160405180910390a35050565b6002602052600090815260409020805460018201805460ff909216929161074790613516565b80601f016020809104026020016040519081016040528092919081815260200182805461077390613516565b80156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b5050505050908060020180546107d590613516565b80601f016020809104026020016040519081016040528092919081815260200182805461080190613516565b801561084e5780601f106108235761010080835404028352916020019161084e565b820191906000526020600020905b81548152906001019060200180831161083157829003601f168201915b5050505050905083565b610860611e98565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60006108b060048361221f565b92915050565b6108be611e98565b6108c88282612232565b5050565b6108d4611e98565b6108f573ffffffffffffffffffffffffffffffffffffffff8416838361238c565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff169183019190915260028101805493949293919284019161096990613516565b80601f016020809104026020016040519081016040528092919081815260200182805461099590613516565b80156109e25780601f106109b7576101008083540402835291602001916109e2565b820191906000526020600020905b8154815290600101906020018083116109c557829003601f168201915b505050505081526020016003820180546109fb90613516565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2790613516565b8015610a745780601f10610a4957610100808354040283529160200191610a74565b820191906000526020600020905b815481529060010190602001808311610a5757829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610af75760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610aa2565b505050915250909392505050565b610b0d611e98565b6001610b1a60048461221f565b14610b59576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610b698260025b600491906123e2565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610bb190613516565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdd90613516565b8015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b50505050508152602001600382018054610c4390613516565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6f90613516565b8015610cbc5780601f10610c9157610100808354040283529160200191610cbc565b820191906000526020600020905b815481529060010190602001808311610c9f57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d3f5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610cea565b5050505081525050905060005b816080015151811015610dce57610dc68383608001518381518110610d7357610d73613569565b60200260200101516020015184608001518481518110610d9557610d95613569565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1661238c9092919063ffffffff16565b600101610d4c565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610b50565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610f24611e98565b60005b818110156110075760026000848484818110610f4557610f45613569565b9050602002810190610f579190613598565b610f65906020810190612f39565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600301838383818110610f9c57610f9c613569565b9050602002810190610fae9190613598565b610fbc9060208101906135d6565b604051610fca929190613506565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101610f27565b5060005b838110156110f65760016002600087878581811061102b5761102b613569565b905060200281019061103d9190613598565b61104b906020810190612f39565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060030186868481811061108257611082613569565b90506020028101906110949190613598565b6110a29060208101906135d6565b6040516110b0929190613506565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905560010161100b565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461116e576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610b50565b61117e6040820160208301612f39565b61118b60408301836135d6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260026020526040908190209051600390910193506111e9925084915061363b565b9081526040519081900360200190205460ff1661123457806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610b509190612f26565b6112446040840160208501612f39565b67ffffffffffffffff8116600090815260026020526040902060018101805461126c90613516565b1590508061127b5750805460ff165b156112be576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610b50565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906112fa90889060040161374f565b600060405180830381600087803b15801561131457600080fd5b505af1925050508015611325575060015b6113c5573d808015611353576040519150601f19603f3d011682016040523d82523d6000602084013e611358565b606091505b5061136586356001610b60565b508535600090815260036020526040902086906113828282613b21565b50506040518635907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906113b7908490612f26565b60405180910390a2506110f6565b6040518535907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25050505050565b333014611431576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061144060608301836135d6565b81019061144d9190613c1b565b905060008160400151600181111561146757611467612d55565b03611475576108c8826123f7565b60018160400151600181111561148d5761148d612d55565b036108c85760008082602001518060200190518101906114ad9190613cc7565b60408051808201909152601581527f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000060209182015282519083012091935091507f1c778f21871bcc06cfebd177c4d0360c2f3550962fb071f69ed007e4f55f23b214611545576040517fae15168d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008281526008602052604090205460ff16600281111561156a5761156a612d55565b146115a4576040517f3ec8770000000000000000000000000000000000000000000000000000000000815260048101829052602401610b50565b60008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600217905590518281527fef0cb160d3dc564cde61ae97d9981f9c4d92ace727a2ec202b18b223ea832a79910160405180910390a150505050565b61161d611e98565b67ffffffffffffffff85166000908152600260205260409020600181016116458587836138a5565b50811561165d576002810161165b8385836138a5565b505b805460ff161561168e5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681555b505050505050565b60016116a360048361221f565b146116dd576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610b50565b6116e8816000610b60565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff1693810193909352600281018054919284019161173090613516565b80601f016020809104026020016040519081016040528092919081815260200182805461175c90613516565b80156117a95780601f1061177e576101008083540402835291602001916117a9565b820191906000526020600020905b81548152906001019060200180831161178c57829003601f168201915b505050505081526020016003820180546117c290613516565b80601f01602080910402602001604051908101604052809291908181526020018280546117ee90613516565b801561183b5780601f106118105761010080835404028352916020019161183b565b820191906000526020600020905b81548152906001019060200180831161181e57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156118be5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611869565b505050508152505090506118d1816127a8565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff831660009081526002602052604081206001810180548692919061192c90613516565b1590508061193b5750805460ff165b1561197e576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610b50565b6040805160a08101825267ffffffffffffffff88166000908152600260205291822060010180548291906119b190613516565b80601f01602080910402602001604051908101604052809291908181526020018280546119dd90613516565b8015611a2a5780601f106119ff57610100808354040283529160200191611a2a565b820191906000526020600020905b815481529060010190602001808311611a0d57829003601f168201915b5050509183525050602080820188905260408083018a905260075473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b16600090815260029283905220018054608090920191611a8990613516565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab590613516565b8015611b025780601f10611ad757610100808354040283529160200191611b02565b820191906000526020600020905b815481529060010190602001808311611ae557829003601f168201915b5050505050815250905060005b8651811015611c6357611b7f3330898481518110611b2f57611b2f613569565b6020026020010151602001518a8581518110611b4d57611b4d613569565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166127b0909392919063ffffffff16565b600754875173ffffffffffffffffffffffffffffffffffffffff90911690889083908110611baf57611baf613569565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614611c5b57611c5b7f0000000000000000000000000000000000000000000000000000000000000000888381518110611c0c57611c0c613569565b602002602001015160200151898481518110611c2a57611c2a613569565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1661211b9092919063ffffffff16565b600101611b0f565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded90611cdb908b908690600401613d48565b602060405180830381865afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1c9190613e0b565b60075490915073ffffffffffffffffffffffffffffffffffffffff1615611d6257600754611d629073ffffffffffffffffffffffffffffffffffffffff163330846127b0565b60075473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f9911615611db1576000611db3565b825b8a856040518463ffffffff1660e01b8152600401611dd2929190613d48565b60206040518083038185885af1158015611df0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e159190613e0b565b60008181526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b611e8c611e98565b611e958161280e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314611f19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610b50565b565b801580611fbb57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb99190613e0b565b155b612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610b50565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526108f59084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612903565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b69190613e0b565b6121c09190613e24565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506122199085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612099565b50505050565b600061222b8383612a0f565b9392505050565b8047101561229c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b50565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146122f6576040519150601f19603f3d011682016040523d82523d6000602084013e6122fb565b606091505b50509050806108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b50565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526108f59084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612099565b60006123ef848484612a99565b949350505050565b6040805160008082526020820190925281612434565b604080518082019091526000808252602082015281526020019060019003908161240d5790505b50905060006040518060a0016040528084806040019061245491906135d6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080518082018252601581527f4d4553534147455f41434b4e4f574c45444745445f00000000000000000000006020828101919091529151928201926124d59288359101613e37565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152908252602082810186905260075473ffffffffffffffffffffffffffffffffffffffff1683830152606090920191600291600091612545918901908901612f39565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600201805461257590613516565b80601f01602080910402602001604051908101604052809291908181526020018280546125a190613516565b80156125ee5780601f106125c3576101008083540402835291602001916125ee565b820191906000526020600020905b8154815290600101906020018083116125d157829003601f168201915b5050505050815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166320487ded8560200160208101906126499190612f39565b846040518363ffffffff1660e01b8152600401612667929190613d48565b602060405180830381865afa158015612684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a89190613e0b565b60075490915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f99116156126fd5760006126ff565b835b61270f6040890160208a01612f39565b866040518463ffffffff1660e01b815260040161272d929190613d48565b60206040518083038185885af115801561274b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127709190613e0b565b60405190915081908635907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b237290600090a35050505050565b611e95611e98565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526122199085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612099565b3373ffffffffffffffffffffffffffffffffffffffff82160361288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610b50565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612965826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ab69092919063ffffffff16565b8051909150156108f557808060200190518101906129839190613e59565b6108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b50565b600081815260028301602052604081205480151580612a335750612a338484612ac5565b61222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610b50565b600082815260028401602052604081208290556123ef8484612ad1565b60606123ef8484600085612add565b600061222b8383612bf6565b600061222b8383612c0e565b606082471015612b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b50565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b98919061363b565b60006040518083038185875af1925050503d8060008114612bd5576040519150601f19603f3d011682016040523d82523d6000602084013e612bda565b606091505b5091509150612beb87838387612c5d565b979650505050505050565b6000818152600183016020526040812054151561222b565b6000818152600183016020526040812054612c55575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108b0565b5060006108b0565b60608315612cf3578251600003612cec5773ffffffffffffffffffffffffffffffffffffffff85163b612cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b50565b50816123ef565b6123ef8383815115612d085781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509190612f26565b600060208284031215612d4e57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310612dbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff81168114611e9557600080fd5b60008083601f840112612ded57600080fd5b50813567ffffffffffffffff811115612e0557600080fd5b602083019150836020828501011115612e1d57600080fd5b9250929050565b600080600060408486031215612e3957600080fd5b8335612e4481612dc5565b9250602084013567ffffffffffffffff811115612e6057600080fd5b612e6c86828701612ddb565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611e9557600080fd5b600060208284031215612ead57600080fd5b813561222b81612e79565b60005b83811015612ed3578181015183820152602001612ebb565b50506000910152565b60008151808452612ef4816020860160208601612eb8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061222b6020830184612edc565b600060208284031215612f4b57600080fd5b813561222b81612dc5565b8315158152606060208201526000612f716060830185612edc565b8281036040840152612f838185612edc565b9695505050505050565b60008060408385031215612fa057600080fd5b8235612fab81612e79565b946020939093013593505050565b600080600060608486031215612fce57600080fd5b8335612fd981612e79565b92506020840135612fe981612e79565b929592945050506040919091013590565b60008151808452602080850194506020840160005b8381101561304c578151805173ffffffffffffffffffffffffffffffffffffffff168852830151838801526040909601959082019060010161300f565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261309160c0840182612edc565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526130cd8383612edc565b925060808601519150808584030160a0860152506130eb8282612ffa565b95945050505050565b6000806040838503121561310757600080fd5b82359150602083013561311981612e79565b809150509250929050565b60008083601f84011261313657600080fd5b50813567ffffffffffffffff81111561314e57600080fd5b6020830191508360208260051b8501011115612e1d57600080fd5b6000806000806040858703121561317f57600080fd5b843567ffffffffffffffff8082111561319757600080fd5b6131a388838901613124565b909650945060208701359150808211156131bc57600080fd5b506131c987828801613124565b95989497509550505050565b6000602082840312156131e757600080fd5b813567ffffffffffffffff8111156131fe57600080fd5b820160a0818503121561222b57600080fd5b60008060008060006060868803121561322857600080fd5b853561323381612dc5565b9450602086013567ffffffffffffffff8082111561325057600080fd5b61325c89838a01612ddb565b9096509450604088013591508082111561327557600080fd5b5061328288828901612ddb565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156132e5576132e5613293565b60405290565b6040516060810167ffffffffffffffff811182821017156132e5576132e5613293565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561335557613355613293565b604052919050565b600067ffffffffffffffff82111561337757613377613293565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126133b457600080fd5b81356133c76133c28261335d565b61330e565b8181528460208386010111156133dc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561340e57600080fd5b833561341981612dc5565b925060208481013567ffffffffffffffff8082111561343757600080fd5b818701915087601f83011261344b57600080fd5b81358181111561345d5761345d613293565b61346b848260051b0161330e565b81815260069190911b8301840190848101908a83111561348a57600080fd5b938501935b828510156134d6576040858c0312156134a85760008081fd5b6134b06132c2565b85356134bb81612e79565b8152858701358782015282526040909401939085019061348f565b9650505060408701359250808311156134ee57600080fd5b50506134fc868287016133a3565b9150509250925092565b8183823760009101908152919050565b600181811c9082168061352a57607f821691505b602082108103613563577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126135cc57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261360b57600080fd5b83018035915067ffffffffffffffff82111561362657600080fd5b602001915036819003821315612e1d57600080fd5b600082516135cc818460208701612eb8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261368257600080fd5b830160208101925035905067ffffffffffffffff8111156136a257600080fd5b803603821315612e1d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b8581101561304c57813561371d81612e79565b73ffffffffffffffffffffffffffffffffffffffff16875281830135838801526040968701969091019060010161370a565b60208152813560208201526000602083013561376a81612dc5565b67ffffffffffffffff8082166040850152613788604086018661364d565b925060a0606086015261379f60c0860184836136b1565b9250506137af606086018661364d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808786030160808801526137e58583856136b1565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301831261381e57600080fd5b6020928801928301923591508382111561383757600080fd5b8160061b360383131561384957600080fd5b8685030160a0870152612beb8482846136fa565b601f8211156108f5576000816000526020600020601f850160051c810160208610156138865750805b601f850160051c820191505b8181101561168e57828155600101613892565b67ffffffffffffffff8311156138bd576138bd613293565b6138d1836138cb8354613516565b8361385d565b6000601f84116001811461392357600085156138ed5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110f6565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156139725786850135825560209485019460019092019101613952565b50868210156139ad577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81356139f981612e79565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b68010000000000000000831115613a5f57613a5f613293565b805483825580841015613aec5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314613aa057613aa06139bf565b8086168614613ab157613ab16139bf565b5060008360005260206000208360011b81018760011b820191505b80821015613ae7578282558284830155600282019150613acc565b505050505b5060008181526020812083915b8581101561168e57613b0b83836139ee565b6040929092019160029190910190600101613af9565b81358155600181016020830135613b3781612dc5565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000845416178355613b7760408601866135d6565b93509150613b898383600287016138a5565b613b9660608601866135d6565b93509150613ba88383600387016138a5565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018312613bdf57600080fd5b918401918235915080821115613bf457600080fd5b506020820191508060061b3603821315613c0d57600080fd5b612219818360048601613a46565b600060208284031215613c2d57600080fd5b813567ffffffffffffffff80821115613c4557600080fd5b9083019060608286031215613c5957600080fd5b613c616132eb565b823582811115613c7057600080fd5b613c7c878286016133a3565b825250602083013582811115613c9157600080fd5b613c9d878286016133a3565b6020830152506040830135925060028310613cb757600080fd5b6040810192909252509392505050565b60008060408385031215613cda57600080fd5b825167ffffffffffffffff811115613cf157600080fd5b8301601f81018513613d0257600080fd5b8051613d106133c28261335d565b818152866020838501011115613d2557600080fd5b613d36826020830160208601612eb8565b60209590950151949694955050505050565b67ffffffffffffffff83168152604060208201526000825160a06040840152613d7460e0840182612edc565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080858403016060860152613db08383612edc565b92506040860151915080858403016080860152613dcd8383612ffa565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c086015250612f838282612edc565b600060208284031215613e1d57600080fd5b5051919050565b808201808211156108b0576108b06139bf565b604081526000613e4a6040830185612edc565b90508260208301529392505050565b600060208284031215613e6b57600080fd5b8151801515811461222b57600080fdfea164736f6c6343000818000a", } var CCIPClientABI = CCIPClientMetaData.ABI @@ -321,11 +321,11 @@ func (_CCIPClient *CCIPClientCallerSession) Owner() (common.Address, error) { return _CCIPClient.Contract.Owner(&_CCIPClient.CallOpts) } -func (_CCIPClient *CCIPClientCaller) SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, +func (_CCIPClient *CCIPClientCaller) SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) { var out []interface{} - err := _CCIPClient.contract.Call(opts, &out, "s_chainConfigs", arg0) + err := _CCIPClient.contract.Call(opts, &out, "s_chainConfigs", destChainSelector) outstruct := new(SChainConfigs) if err != nil { @@ -340,16 +340,16 @@ func (_CCIPClient *CCIPClientCaller) SChainConfigs(opts *bind.CallOpts, arg0 uin } -func (_CCIPClient *CCIPClientSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_CCIPClient *CCIPClientSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _CCIPClient.Contract.SChainConfigs(&_CCIPClient.CallOpts, arg0) + return _CCIPClient.Contract.SChainConfigs(&_CCIPClient.CallOpts, destChainSelector) } -func (_CCIPClient *CCIPClientCallerSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_CCIPClient *CCIPClientCallerSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _CCIPClient.Contract.SChainConfigs(&_CCIPClient.CallOpts, arg0) + return _CCIPClient.Contract.SChainConfigs(&_CCIPClient.CallOpts, destChainSelector) } func (_CCIPClient *CCIPClientCaller) SFeeToken(opts *bind.CallOpts) (common.Address, error) { @@ -1965,7 +1965,7 @@ type CCIPClientInterface interface { Owner(opts *bind.CallOpts) (common.Address, error) - SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, + SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) diff --git a/core/gethwrappers/ccip/generated/ccipReceiver/ccipReceiver.go b/core/gethwrappers/ccip/generated/ccipReceiver/ccipReceiver.go index a7920aa1ff..fd5ede0f3e 100644 --- a/core/gethwrappers/ccip/generated/ccipReceiver/ccipReceiver.go +++ b/core/gethwrappers/ccip/generated/ccipReceiver/ccipReceiver.go @@ -49,8 +49,8 @@ type ClientEVMTokenAmount struct { } var CCIPReceiverMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523480156200001157600080fd5b5060405162002a7e38038062002a7e8339810160408190526200003491620001a8565b8033806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620000fd565b5050506001600160a01b038116620000ea576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b031660805250620001da565b336001600160a01b03821603620001575760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001bb57600080fd5b81516001600160a01b0381168114620001d357600080fd5b9392505050565b608051612881620001fd600039600081816103760152610e5901526128816000f3fe60806040526004361061012d5760003560e01c806379ba5097116100a5578063b0f479a111610074578063d8469e4011610059578063d8469e40146103ba578063e4ca8754146103da578063f2fde38b146103fa57600080fd5b8063b0f479a114610367578063cf6730f81461039a57600080fd5b806379ba5097146102c65780638462a2b9146102db57806385572ffb146102fb5780638da5cb5b1461031b57600080fd5b80635075a9d4116100fc5780635e35359e116100e15780635e35359e146102595780636939cd97146102795780636d62d633146102a657600080fd5b80635075a9d41461020b578063536c6bfa1461023957600080fd5b80630e958d6b14610139578063181f5a771461016e57806335f170ef146101ba57806341eade46146101e957600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50610159610154366004611c90565b61041a565b60405190151581526020015b60405180910390f35b34801561017a57600080fd5b50604080518082018252601681527f43434950526563656976657220312e302e302d64657600000000000000000000602082015290516101659190611d53565b3480156101c657600080fd5b506101da6101d5366004611d66565b610465565b60405161016593929190611d83565b3480156101f557600080fd5b50610209610204366004611d66565b61059c565b005b34801561021757600080fd5b5061022b610226366004611dba565b6105e7565b604051908152602001610165565b34801561024557600080fd5b50610209610254366004611df5565b6105fa565b34801561026557600080fd5b50610209610274366004611e21565b610610565b34801561028557600080fd5b50610299610294366004611dba565b61063e565b6040516101659190611e62565b3480156102b257600080fd5b506102096102c1366004611f49565b610849565b3480156102d257600080fd5b50610209610b63565b3480156102e757600080fd5b506102096102f6366004611fbe565b610c60565b34801561030757600080fd5b5061020961031636600461202a565b610e41565b34801561032757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610165565b34801561037357600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610342565b3480156103a657600080fd5b506102096103b536600461202a565b611074565b3480156103c657600080fd5b506102096103d5366004612065565b611173565b3480156103e657600080fd5b506102096103f5366004611dba565b6111f4565b34801561040657600080fd5b506102096104153660046120e8565b61145d565b67ffffffffffffffff831660009081526002602052604080822090516003909101906104499085908590612105565b9081526040519081900360200190205460ff1690509392505050565b6002602052600090815260409020805460018201805460ff909216929161048b90612115565b80601f01602080910402602001604051908101604052809291908181526020018280546104b790612115565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b50505050509080600201805461051990612115565b80601f016020809104026020016040519081016040528092919081815260200182805461054590612115565b80156105925780601f1061056757610100808354040283529160200191610592565b820191906000526020600020905b81548152906001019060200180831161057557829003601f168201915b5050505050905083565b6105a4611471565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60006105f46004836114f4565b92915050565b610602611471565b61060c8282611507565b5050565b610618611471565b61063973ffffffffffffffffffffffffffffffffffffffff84168383611661565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff16918301919091526002810180549394929391928401916106ad90612115565b80601f01602080910402602001604051908101604052809291908181526020018280546106d990612115565b80156107265780601f106106fb57610100808354040283529160200191610726565b820191906000526020600020905b81548152906001019060200180831161070957829003601f168201915b5050505050815260200160038201805461073f90612115565b80601f016020809104026020016040519081016040528092919081815260200182805461076b90612115565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561083b5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016107e6565b505050915250909392505050565b610851611471565b600161085e6004846114f4565b1461089d576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6108ad8260025b600491906116ee565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff169381019390935260028101805491928401916108f590612115565b80601f016020809104026020016040519081016040528092919081815260200182805461092190612115565b801561096e5780601f106109435761010080835404028352916020019161096e565b820191906000526020600020905b81548152906001019060200180831161095157829003601f168201915b5050505050815260200160038201805461098790612115565b80601f01602080910402602001604051908101604052809291908181526020018280546109b390612115565b8015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610a835760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610a2e565b5050505081525050905060005b816080015151811015610b1257610b0a8383608001518381518110610ab757610ab7612168565b60200260200101516020015184608001518481518110610ad957610ad9612168565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166116619092919063ffffffff16565b600101610a90565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610894565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610c68611471565b60005b81811015610d4b5760026000848484818110610c8957610c89612168565b9050602002810190610c9b9190612197565b610ca9906020810190611d66565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600301838383818110610ce057610ce0612168565b9050602002810190610cf29190612197565b610d009060208101906121d5565b604051610d0e929190612105565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101610c6b565b5060005b83811015610e3a57600160026000878785818110610d6f57610d6f612168565b9050602002810190610d819190612197565b610d8f906020810190611d66565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600301868684818110610dc657610dc6612168565b9050602002810190610dd89190612197565b610de69060208101906121d5565b604051610df4929190612105565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055600101610d4f565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610eb2576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610894565b610ec26040820160208301611d66565b67ffffffffffffffff81166000908152600260205260409020600181018054610eea90612115565b15905080610ef95750805460ff165b15610f3c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610894565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890610f78908690600401612347565b600060405180830381600087803b158015610f9257600080fd5b505af1925050508015610fa3575060015b611043573d808015610fd1576040519150601f19603f3d011682016040523d82523d6000602084013e610fd6565b606091505b50610fe3843560016108a4565b508335600090815260036020526040902084906110008282612740565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f90611035908490611d53565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a2505050565b3330146110ad576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110bd6040820160208301611d66565b6110ca60408301836121d5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260026020526040908190209051600390910193506111289250849150612840565b9081526040519081900360200190205460ff1661063957806040517f5075bb380000000000000000000000000000000000000000000000000000000081526004016108949190611d53565b61117b611471565b67ffffffffffffffff85166000908152600260205260409020600181016111a38587836124cc565b5081156111bb57600281016111b98385836124cc565b505b805460ff16156111ec5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681555b505050505050565b6111fc611471565b60016112096004836114f4565b14611243576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610894565b61124e8160006108a4565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff1693810193909352600281018054919284019161129690612115565b80601f01602080910402602001604051908101604052809291908181526020018280546112c290612115565b801561130f5780601f106112e45761010080835404028352916020019161130f565b820191906000526020600020905b8154815290600101906020018083116112f257829003601f168201915b5050505050815260200160038201805461132890612115565b80601f016020809104026020016040519081016040528092919081815260200182805461135490612115565b80156113a15780601f10611376576101008083540402835291602001916113a1565b820191906000526020600020905b81548152906001019060200180831161138457829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156114245760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016113cf565b5050505081525050905060405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b611465611471565b61146e81611703565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146114f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610894565b565b600061150083836117f8565b9392505050565b80471015611571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610894565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146115cb576040519150601f19603f3d011682016040523d82523d6000602084013e6115d0565b606091505b5050905080610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610894565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610639908490611882565b60006116fb84848461198e565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff821603611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610894565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008181526002830160205260408120548015158061181c575061181c84846119ab565b611500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610894565b60006118e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119b79092919063ffffffff16565b80519091501561063957808060200190518101906119029190612852565b610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610894565b600082815260028401602052604081208290556116fb84846119c6565b600061150083836119d2565b60606116fb84846000856119ea565b60006115008383611b03565b60008181526001830160205260408120541515611500565b606082471015611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610894565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611aa59190612840565b60006040518083038185875af1925050503d8060008114611ae2576040519150601f19603f3d011682016040523d82523d6000602084013e611ae7565b606091505b5091509150611af887838387611b52565b979650505050505050565b6000818152600183016020526040812054611b4a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105f4565b5060006105f4565b60608315611be8578251600003611be15773ffffffffffffffffffffffffffffffffffffffff85163b611be1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610894565b50816116fb565b6116fb8383815115611bfd5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108949190611d53565b67ffffffffffffffff8116811461146e57600080fd5b60008083601f840112611c5957600080fd5b50813567ffffffffffffffff811115611c7157600080fd5b602083019150836020828501011115611c8957600080fd5b9250929050565b600080600060408486031215611ca557600080fd5b8335611cb081611c31565b9250602084013567ffffffffffffffff811115611ccc57600080fd5b611cd886828701611c47565b9497909650939450505050565b60005b83811015611d00578181015183820152602001611ce8565b50506000910152565b60008151808452611d21816020860160208601611ce5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115006020830184611d09565b600060208284031215611d7857600080fd5b813561150081611c31565b8315158152606060208201526000611d9e6060830185611d09565b8281036040840152611db08185611d09565b9695505050505050565b600060208284031215611dcc57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461146e57600080fd5b60008060408385031215611e0857600080fd5b8235611e1381611dd3565b946020939093013593505050565b600080600060608486031215611e3657600080fd5b8335611e4181611dd3565b92506020840135611e5181611dd3565b929592945050506040919091013590565b6000602080835283518184015280840151604067ffffffffffffffff821660408601526040860151915060a06060860152611ea060c0860183611d09565b915060608601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878503016080880152611edc8483611d09565b608089015188820390920160a089015281518082529186019450600092508501905b80831015611f3d578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001929092019190830190611efe565b50979650505050505050565b60008060408385031215611f5c57600080fd5b823591506020830135611f6e81611dd3565b809150509250929050565b60008083601f840112611f8b57600080fd5b50813567ffffffffffffffff811115611fa357600080fd5b6020830191508360208260051b8501011115611c8957600080fd5b60008060008060408587031215611fd457600080fd5b843567ffffffffffffffff80821115611fec57600080fd5b611ff888838901611f79565b9096509450602087013591508082111561201157600080fd5b5061201e87828801611f79565b95989497509550505050565b60006020828403121561203c57600080fd5b813567ffffffffffffffff81111561205357600080fd5b820160a0818503121561150057600080fd5b60008060008060006060868803121561207d57600080fd5b853561208881611c31565b9450602086013567ffffffffffffffff808211156120a557600080fd5b6120b189838a01611c47565b909650945060408801359150808211156120ca57600080fd5b506120d788828901611c47565b969995985093965092949392505050565b6000602082840312156120fa57600080fd5b813561150081611dd3565b8183823760009101908152919050565b600181811c9082168061212957607f821691505b602082108103612162577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126121cb57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261220a57600080fd5b83018035915067ffffffffffffffff82111561222557600080fd5b602001915036819003821315611c8957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261226f57600080fd5b830160208101925035905067ffffffffffffffff81111561228f57600080fd5b803603821315611c8957600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b8581101561233c57813561230a81611dd3565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016122f7565b509495945050505050565b60208152813560208201526000602083013561236281611c31565b67ffffffffffffffff8082166040850152612380604086018661223a565b925060a0606086015261239760c08601848361229e565b9250506123a7606086018661223a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808786030160808801526123dd85838561229e565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301831261241657600080fd5b6020928801928301923591508382111561242f57600080fd5b8160061b360383131561244157600080fd5b8685030160a0870152611af88482846122e7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610639576000816000526020600020601f850160051c810160208610156124ad5750805b601f850160051c820191505b818110156111ec578281556001016124b9565b67ffffffffffffffff8311156124e4576124e4612455565b6124f8836124f28354612115565b83612484565b6000601f84116001811461254a57600085156125145750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610e3a565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156125995786850135825560209485019460019092019101612579565b50868210156125d4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b600181901b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82168214612643577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b919050565b813561265381611dd3565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156126b9576126b9612455565b80548382558084101561270b576126cf816125e6565b6126d8856125e6565b6000848152602081209283019291909101905b82821015612707578082558060018301556002820191506126eb565b5050505b5060008181526020812083915b858110156111ec5761272a8383612648565b6040929092019160029190910190600101612718565b8135815560018101602083013561275681611c31565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000084541617835561279660408601866121d5565b935091506127a88383600287016124cc565b6127b560608601866121d5565b935091506127c78383600387016124cc565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18536030183126127fe57600080fd5b91840191823591508082111561281357600080fd5b506020820191508060061b360382131561282c57600080fd5b61283a8183600486016126a0565b50505050565b600082516121cb818460208701611ce5565b60006020828403121561286457600080fd5b8151801515811461150057600080fdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60a06040523480156200001157600080fd5b5060405162002a8738038062002a878339810160408190526200003491620001a8565b8033806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620000fd565b5050506001600160a01b038116620000ea576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b031660805250620001da565b336001600160a01b03821603620001575760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001bb57600080fd5b81516001600160a01b0381168114620001d357600080fd5b9392505050565b60805161288a620001fd600039600081816103760152610e59015261288a6000f3fe60806040526004361061012d5760003560e01c806379ba5097116100a5578063b0f479a111610074578063d8469e4011610059578063d8469e40146103ba578063e4ca8754146103da578063f2fde38b146103fa57600080fd5b8063b0f479a114610367578063cf6730f81461039a57600080fd5b806379ba5097146102c65780638462a2b9146102db57806385572ffb146102fb5780638da5cb5b1461031b57600080fd5b80635075a9d4116100fc5780635e35359e116100e15780635e35359e146102595780636939cd97146102795780636d62d633146102a657600080fd5b80635075a9d41461020b578063536c6bfa1461023957600080fd5b80630e958d6b14610139578063181f5a771461016e57806335f170ef146101ba57806341eade46146101e957600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50610159610154366004611c99565b61041a565b60405190151581526020015b60405180910390f35b34801561017a57600080fd5b50604080518082018252601681527f43434950526563656976657220312e302e302d64657600000000000000000000602082015290516101659190611d5c565b3480156101c657600080fd5b506101da6101d5366004611d6f565b610465565b60405161016593929190611d8c565b3480156101f557600080fd5b50610209610204366004611d6f565b61059c565b005b34801561021757600080fd5b5061022b610226366004611dc3565b6105e7565b604051908152602001610165565b34801561024557600080fd5b50610209610254366004611dfe565b6105fa565b34801561026557600080fd5b50610209610274366004611e2a565b610610565b34801561028557600080fd5b50610299610294366004611dc3565b61063e565b6040516101659190611e6b565b3480156102b257600080fd5b506102096102c1366004611f52565b610849565b3480156102d257600080fd5b50610209610b63565b3480156102e757600080fd5b506102096102f6366004611fc7565b610c60565b34801561030757600080fd5b50610209610316366004612033565b610e41565b34801561032757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610165565b34801561037357600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610342565b3480156103a657600080fd5b506102096103b5366004612033565b611074565b3480156103c657600080fd5b506102096103d536600461206e565b611173565b3480156103e657600080fd5b506102096103f5366004611dc3565b6111f4565b34801561040657600080fd5b506102096104153660046120f1565b61145e565b67ffffffffffffffff83166000908152600260205260408082209051600390910190610449908590859061210e565b9081526040519081900360200190205460ff1690509392505050565b6002602052600090815260409020805460018201805460ff909216929161048b9061211e565b80601f01602080910402602001604051908101604052809291908181526020018280546104b79061211e565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050908060020180546105199061211e565b80601f01602080910402602001604051908101604052809291908181526020018280546105459061211e565b80156105925780601f1061056757610100808354040283529160200191610592565b820191906000526020600020905b81548152906001019060200180831161057557829003601f168201915b5050505050905083565b6105a4611472565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60006105f46004836114f5565b92915050565b610602611472565b61060c8282611508565b5050565b610618611472565b61063973ffffffffffffffffffffffffffffffffffffffff84168383611662565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff16918301919091526002810180549394929391928401916106ad9061211e565b80601f01602080910402602001604051908101604052809291908181526020018280546106d99061211e565b80156107265780601f106106fb57610100808354040283529160200191610726565b820191906000526020600020905b81548152906001019060200180831161070957829003601f168201915b5050505050815260200160038201805461073f9061211e565b80601f016020809104026020016040519081016040528092919081815260200182805461076b9061211e565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561083b5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016107e6565b505050915250909392505050565b610851611472565b600161085e6004846114f5565b1461089d576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6108ad8260025b600491906116ef565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff169381019390935260028101805491928401916108f59061211e565b80601f01602080910402602001604051908101604052809291908181526020018280546109219061211e565b801561096e5780601f106109435761010080835404028352916020019161096e565b820191906000526020600020905b81548152906001019060200180831161095157829003601f168201915b505050505081526020016003820180546109879061211e565b80601f01602080910402602001604051908101604052809291908181526020018280546109b39061211e565b8015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610a835760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610a2e565b5050505081525050905060005b816080015151811015610b1257610b0a8383608001518381518110610ab757610ab7612171565b60200260200101516020015184608001518481518110610ad957610ad9612171565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166116629092919063ffffffff16565b600101610a90565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610894565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610c68611472565b60005b81811015610d4b5760026000848484818110610c8957610c89612171565b9050602002810190610c9b91906121a0565b610ca9906020810190611d6f565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600301838383818110610ce057610ce0612171565b9050602002810190610cf291906121a0565b610d009060208101906121de565b604051610d0e92919061210e565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101610c6b565b5060005b83811015610e3a57600160026000878785818110610d6f57610d6f612171565b9050602002810190610d8191906121a0565b610d8f906020810190611d6f565b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600301868684818110610dc657610dc6612171565b9050602002810190610dd891906121a0565b610de69060208101906121de565b604051610df492919061210e565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055600101610d4f565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610eb2576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610894565b610ec26040820160208301611d6f565b67ffffffffffffffff81166000908152600260205260409020600181018054610eea9061211e565b15905080610ef95750805460ff165b15610f3c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610894565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890610f78908690600401612350565b600060405180830381600087803b158015610f9257600080fd5b505af1925050508015610fa3575060015b611043573d808015610fd1576040519150601f19603f3d011682016040523d82523d6000602084013e610fd6565b606091505b50610fe3843560016108a4565b508335600090815260036020526040902084906110008282612749565b50506040518435907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f90611035908490611d5c565b60405180910390a250505050565b6040518335907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a2505050565b3330146110ad576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110bd6040820160208301611d6f565b6110ca60408301836121de565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260026020526040908190209051600390910193506111289250849150612849565b9081526040519081900360200190205460ff1661063957806040517f5075bb380000000000000000000000000000000000000000000000000000000081526004016108949190611d5c565b61117b611472565b67ffffffffffffffff85166000908152600260205260409020600181016111a38587836124d5565b5081156111bb57600281016111b98385836124d5565b505b805460ff16156111ec5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681555b505050505050565b60016112016004836114f5565b1461123b576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610894565b6112468160006108a4565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff1693810193909352600281018054919284019161128e9061211e565b80601f01602080910402602001604051908101604052809291908181526020018280546112ba9061211e565b80156113075780601f106112dc57610100808354040283529160200191611307565b820191906000526020600020905b8154815290600101906020018083116112ea57829003601f168201915b505050505081526020016003820180546113209061211e565b80601f016020809104026020016040519081016040528092919081815260200182805461134c9061211e565b80156113995780601f1061136e57610100808354040283529160200191611399565b820191906000526020600020905b81548152906001019060200180831161137c57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561141c5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff1682526001908101548284015290835290920191016113c7565b5050505081525050905061142f81611704565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b611466611472565b61146f8161170c565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146114f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610894565b565b60006115018383611801565b9392505050565b80471015611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610894565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146115cc576040519150601f19603f3d011682016040523d82523d6000602084013e6115d1565b606091505b5050905080610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610894565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261063990849061188b565b60006116fc848484611997565b949350505050565b61146f611472565b3373ffffffffffffffffffffffffffffffffffffffff82160361178b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610894565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260028301602052604081205480151580611825575061182584846119b4565b611501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610894565b60006118ed826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119c09092919063ffffffff16565b805190915015610639578080602001905181019061190b919061285b565b610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610894565b600082815260028401602052604081208290556116fc84846119cf565b600061150183836119db565b60606116fc84846000856119f3565b60006115018383611b0c565b60008181526001830160205260408120541515611501565b606082471015611a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610894565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611aae9190612849565b60006040518083038185875af1925050503d8060008114611aeb576040519150601f19603f3d011682016040523d82523d6000602084013e611af0565b606091505b5091509150611b0187838387611b5b565b979650505050505050565b6000818152600183016020526040812054611b53575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105f4565b5060006105f4565b60608315611bf1578251600003611bea5773ffffffffffffffffffffffffffffffffffffffff85163b611bea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610894565b50816116fc565b6116fc8383815115611c065781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108949190611d5c565b67ffffffffffffffff8116811461146f57600080fd5b60008083601f840112611c6257600080fd5b50813567ffffffffffffffff811115611c7a57600080fd5b602083019150836020828501011115611c9257600080fd5b9250929050565b600080600060408486031215611cae57600080fd5b8335611cb981611c3a565b9250602084013567ffffffffffffffff811115611cd557600080fd5b611ce186828701611c50565b9497909650939450505050565b60005b83811015611d09578181015183820152602001611cf1565b50506000910152565b60008151808452611d2a816020860160208601611cee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115016020830184611d12565b600060208284031215611d8157600080fd5b813561150181611c3a565b8315158152606060208201526000611da76060830185611d12565b8281036040840152611db98185611d12565b9695505050505050565b600060208284031215611dd557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461146f57600080fd5b60008060408385031215611e1157600080fd5b8235611e1c81611ddc565b946020939093013593505050565b600080600060608486031215611e3f57600080fd5b8335611e4a81611ddc565b92506020840135611e5a81611ddc565b929592945050506040919091013590565b6000602080835283518184015280840151604067ffffffffffffffff821660408601526040860151915060a06060860152611ea960c0860183611d12565b915060608601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878503016080880152611ee58483611d12565b608089015188820390920160a089015281518082529186019450600092508501905b80831015611f46578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001929092019190830190611f07565b50979650505050505050565b60008060408385031215611f6557600080fd5b823591506020830135611f7781611ddc565b809150509250929050565b60008083601f840112611f9457600080fd5b50813567ffffffffffffffff811115611fac57600080fd5b6020830191508360208260051b8501011115611c9257600080fd5b60008060008060408587031215611fdd57600080fd5b843567ffffffffffffffff80821115611ff557600080fd5b61200188838901611f82565b9096509450602087013591508082111561201a57600080fd5b5061202787828801611f82565b95989497509550505050565b60006020828403121561204557600080fd5b813567ffffffffffffffff81111561205c57600080fd5b820160a0818503121561150157600080fd5b60008060008060006060868803121561208657600080fd5b853561209181611c3a565b9450602086013567ffffffffffffffff808211156120ae57600080fd5b6120ba89838a01611c50565b909650945060408801359150808211156120d357600080fd5b506120e088828901611c50565b969995985093965092949392505050565b60006020828403121561210357600080fd5b813561150181611ddc565b8183823760009101908152919050565b600181811c9082168061213257607f821691505b60208210810361216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126121d457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261221357600080fd5b83018035915067ffffffffffffffff82111561222e57600080fd5b602001915036819003821315611c9257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261227857600080fd5b830160208101925035905067ffffffffffffffff81111561229857600080fd5b803603821315611c9257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b8581101561234557813561231381611ddc565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101612300565b509495945050505050565b60208152813560208201526000602083013561236b81611c3a565b67ffffffffffffffff80821660408501526123896040860186612243565b925060a060608601526123a060c0860184836122a7565b9250506123b06060860186612243565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808786030160808801526123e68583856122a7565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe188360301831261241f57600080fd5b6020928801928301923591508382111561243857600080fd5b8160061b360383131561244a57600080fd5b8685030160a0870152611b018482846122f0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610639576000816000526020600020601f850160051c810160208610156124b65750805b601f850160051c820191505b818110156111ec578281556001016124c2565b67ffffffffffffffff8311156124ed576124ed61245e565b612501836124fb835461211e565b8361248d565b6000601f841160018114612553576000851561251d5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610e3a565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156125a25786850135825560209485019460019092019101612582565b50868210156125dd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b600181901b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216821461264c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b919050565b813561265c81611ddc565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156126c2576126c261245e565b805483825580841015612714576126d8816125ef565b6126e1856125ef565b6000848152602081209283019291909101905b82821015612710578082558060018301556002820191506126f4565b5050505b5060008181526020812083915b858110156111ec576127338383612651565b6040929092019160029190910190600101612721565b8135815560018101602083013561275f81611c3a565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000084541617835561279f60408601866121de565b935091506127b18383600287016124d5565b6127be60608601866121de565b935091506127d08383600387016124d5565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261280757600080fd5b91840191823591508082111561281c57600080fd5b506020820191508060061b360382131561283557600080fd5b6128438183600486016126a9565b50505050565b600082516121d4818460208701611cee565b60006020828403121561286d57600080fd5b8151801515811461150157600080fdfea164736f6c6343000818000a", } var CCIPReceiverABI = CCIPReceiverMetaData.ABI @@ -299,11 +299,11 @@ func (_CCIPReceiver *CCIPReceiverCallerSession) Owner() (common.Address, error) return _CCIPReceiver.Contract.Owner(&_CCIPReceiver.CallOpts) } -func (_CCIPReceiver *CCIPReceiverCaller) SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, +func (_CCIPReceiver *CCIPReceiverCaller) SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) { var out []interface{} - err := _CCIPReceiver.contract.Call(opts, &out, "s_chainConfigs", arg0) + err := _CCIPReceiver.contract.Call(opts, &out, "s_chainConfigs", destChainSelector) outstruct := new(SChainConfigs) if err != nil { @@ -318,16 +318,16 @@ func (_CCIPReceiver *CCIPReceiverCaller) SChainConfigs(opts *bind.CallOpts, arg0 } -func (_CCIPReceiver *CCIPReceiverSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_CCIPReceiver *CCIPReceiverSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _CCIPReceiver.Contract.SChainConfigs(&_CCIPReceiver.CallOpts, arg0) + return _CCIPReceiver.Contract.SChainConfigs(&_CCIPReceiver.CallOpts, destChainSelector) } -func (_CCIPReceiver *CCIPReceiverCallerSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_CCIPReceiver *CCIPReceiverCallerSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _CCIPReceiver.Contract.SChainConfigs(&_CCIPReceiver.CallOpts, arg0) + return _CCIPReceiver.Contract.SChainConfigs(&_CCIPReceiver.CallOpts, destChainSelector) } func (_CCIPReceiver *CCIPReceiverCaller) TypeAndVersion(opts *bind.CallOpts) (string, error) { @@ -1343,7 +1343,7 @@ type CCIPReceiverInterface interface { Owner(opts *bind.CallOpts) (common.Address, error) - SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, + SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) diff --git a/core/gethwrappers/ccip/generated/ccipSender/ccipSender.go b/core/gethwrappers/ccip/generated/ccipSender/ccipSender.go index 8ed77d40ce..c309ab05e4 100644 --- a/core/gethwrappers/ccip/generated/ccipSender/ccipSender.go +++ b/core/gethwrappers/ccip/generated/ccipSender/ccipSender.go @@ -41,7 +41,7 @@ type ClientEVMTokenAmount struct { } var CCIPSenderMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientNativeFeeTokenAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InsufficientNativeFeeTokenAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", Bin: "0x60a06040523480156200001157600080fd5b506040516200219c3803806200219c8339810160408190526200003491620001a8565b8033806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf81620000fd565b5050506001600160a01b038116620000ea576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b031660805250620001da565b336001600160a01b03821603620001575760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001bb57600080fd5b81516001600160a01b0381168114620001d357600080fd5b9392505050565b608051611f8a620002126000396000818161028401528181610b8d01528181610c5601528181610d2a0152610d660152611f8a6000f3fe6080604052600436106100d65760003560e01c806379ba50971161007f578063b0f479a111610059578063b0f479a114610275578063d8469e40146102a8578063effde240146102c8578063f2fde38b146102e957600080fd5b806379ba5097146101f45780638462a2b9146102095780638da5cb5b1461022957600080fd5b806341eade46116100b057806341eade4614610192578063536c6bfa146101b45780635e35359e146101d457600080fd5b80630e958d6b146100e2578063181f5a771461011757806335f170ef1461016357600080fd5b366100dd57005b600080fd5b3480156100ee57600080fd5b506101026100fd3660046116e6565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b50604080518082018252601481527f4343495053656e64657220312e302e302d6465760000000000000000000000006020820152905161010e91906117a7565b34801561016f57600080fd5b5061018361017e3660046117c1565b610354565b60405161010e939291906117dc565b34801561019e57600080fd5b506101b26101ad3660046117c1565b61048b565b005b3480156101c057600080fd5b506101b26101cf366004611835565b6104d6565b3480156101e057600080fd5b506101b26101ef36600461186c565b6104ec565b34801561020057600080fd5b506101b261051a565b34801561021557600080fd5b506101b26102243660046118f2565b61061c565b34801561023557600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b34801561028157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610250565b3480156102b457600080fd5b506101b26102c336600461195e565b6107fd565b6102db6102d63660046119df565b61087e565b60405190815260200161010e565b3480156102f557600080fd5b506101b2610304366004611aa0565b610e49565b67ffffffffffffffff831660009081526002602052604080822090516003909101906103389085908590611abd565b9081526040519081900360200190205460ff1690509392505050565b6002602052600090815260409020805460018201805460ff909216929161037a90611acd565b80601f01602080910402602001604051908101604052809291908181526020018280546103a690611acd565b80156103f35780601f106103c8576101008083540402835291602001916103f3565b820191906000526020600020905b8154815290600101906020018083116103d657829003601f168201915b50505050509080600201805461040890611acd565b80601f016020809104026020016040519081016040528092919081815260200182805461043490611acd565b80156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050905083565b610493610e5d565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6104de610e5d565b6104e88282610ee0565b5050565b6104f4610e5d565b61051573ffffffffffffffffffffffffffffffffffffffff8416838361103a565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610624610e5d565b60005b81811015610707576002600084848481811061064557610645611b20565b90506020028101906106579190611b4f565b6106659060208101906117c1565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060030183838381811061069c5761069c611b20565b90506020028101906106ae9190611b4f565b6106bc906020810190611b8d565b6040516106ca929190611abd565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101610627565b5060005b838110156107f65760016002600087878581811061072b5761072b611b20565b905060200281019061073d9190611b4f565b61074b9060208101906117c1565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060030186868481811061078257610782611b20565b90506020028101906107949190611b4f565b6107a2906020810190611b8d565b6040516107b0929190611abd565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905560010161070b565b5050505050565b610805610e5d565b67ffffffffffffffff851660009081526002602052604090206001810161082d858783611c69565b5081156108455760028101610843838583611c69565b505b805460ff16156108765780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681555b505050505050565b67ffffffffffffffff86166000908152600260205260408120600181018054899291906108aa90611acd565b159050806108b95750805460ff165b156108fc576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610597565b6040805160a08101825267ffffffffffffffff8b1660009081526002602052918220600101805482919061092f90611acd565b80601f016020809104026020016040519081016040528092919081815260200182805461095b90611acd565b80156109a85780601f1061097d576101008083540402835291602001916109a8565b820191906000526020600020905b81548152906001019060200180831161098b57829003601f168201915b5050505050815260200188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250506040805160208e8102820181019092528d815293810193928e92508d9182919085015b82821015610a3857610a2960408302860136819003810190611d83565b81526020019060010190610a0c565b505050505081526020018673ffffffffffffffffffffffffffffffffffffffff168152602001600260008d67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206002018054610a9390611acd565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90611acd565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b5050505050815250905060005b88811015610c1557610b8833308c8c85818110610b3857610b38611b20565b905060400201602001358d8d86818110610b5457610b54611b20565b610b6a9260206040909202019081019150611aa0565b73ffffffffffffffffffffffffffffffffffffffff1692919061110e565b610c0d7f00000000000000000000000000000000000000000000000000000000000000008b8b84818110610bbe57610bbe611b20565b905060400201602001358c8c85818110610bda57610bda611b20565b610bf09260206040909202019081019150611aa0565b73ffffffffffffffffffffffffffffffffffffffff169190611172565b600101610b19565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded90610c8d908e908690600401611ddb565b602060405180830381865afa158015610caa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cce9190611ef0565b905073ffffffffffffffffffffffffffffffffffffffff861615610d4f57610d0e73ffffffffffffffffffffffffffffffffffffffff871633308461110e565b610d4f73ffffffffffffffffffffffffffffffffffffffff87167f000000000000000000000000000000000000000000000000000000000000000083611172565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906396f4e9f990881615610d9c576000610d9e565b825b8d856040518463ffffffff1660e01b8152600401610dbd929190611ddb565b60206040518083038185885af1158015610ddb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e009190611ef0565b94507f54791b38f3859327992a1ca0590ad3c0f08feba98d1a4f56ab0dca74d203392a85604051610e3391815260200190565b60405180910390a1505050509695505050505050565b610e51610e5d565b610e5a81611270565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610597565b565b80471015610f4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610597565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fa4576040519150601f19603f3d011682016040523d82523d6000602084013e610fa9565b606091505b5050905080610515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610597565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105159084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611365565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261116c9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161108c565b50505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d9190611ef0565b6112179190611f09565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061116c9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161108c565b3373ffffffffffffffffffffffffffffffffffffffff8216036112ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610597565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006113c7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114719092919063ffffffff16565b80519091501561051557808060200190518101906113e59190611f49565b610515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610597565b60606114808484600085611488565b949350505050565b60608247101561151a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610597565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516115439190611f6b565b60006040518083038185875af1925050503d8060008114611580576040519150601f19603f3d011682016040523d82523d6000602084013e611585565b606091505b5091509150611596878383876115a1565b979650505050505050565b606083156116375782516000036116305773ffffffffffffffffffffffffffffffffffffffff85163b611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610597565b5081611480565b611480838381511561164c5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059791906117a7565b803567ffffffffffffffff8116811461169857600080fd5b919050565b60008083601f8401126116af57600080fd5b50813567ffffffffffffffff8111156116c757600080fd5b6020830191508360208285010111156116df57600080fd5b9250929050565b6000806000604084860312156116fb57600080fd5b61170484611680565b9250602084013567ffffffffffffffff81111561172057600080fd5b61172c8682870161169d565b9497909650939450505050565b60005b8381101561175457818101518382015260200161173c565b50506000910152565b60008151808452611775816020860160208601611739565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006117ba602083018461175d565b9392505050565b6000602082840312156117d357600080fd5b6117ba82611680565b83151581526060602082015260006117f7606083018561175d565b8281036040840152611809818561175d565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610e5a57600080fd5b6000806040838503121561184857600080fd5b823561185381611813565b946020939093013593505050565b803561169881611813565b60008060006060848603121561188157600080fd5b833561188c81611813565b9250602084013561189c81611813565b929592945050506040919091013590565b60008083601f8401126118bf57600080fd5b50813567ffffffffffffffff8111156118d757600080fd5b6020830191508360208260051b85010111156116df57600080fd5b6000806000806040858703121561190857600080fd5b843567ffffffffffffffff8082111561192057600080fd5b61192c888389016118ad565b9096509450602087013591508082111561194557600080fd5b50611952878288016118ad565b95989497509550505050565b60008060008060006060868803121561197657600080fd5b61197f86611680565b9450602086013567ffffffffffffffff8082111561199c57600080fd5b6119a889838a0161169d565b909650945060408801359150808211156119c157600080fd5b506119ce8882890161169d565b969995985093965092949392505050565b600080600080600080608087890312156119f857600080fd5b611a0187611680565b9550602087013567ffffffffffffffff80821115611a1e57600080fd5b818901915089601f830112611a3257600080fd5b813581811115611a4157600080fd5b8a60208260061b8501011115611a5657600080fd5b602083019750809650506040890135915080821115611a7457600080fd5b50611a8189828a0161169d565b9094509250611a94905060608801611861565b90509295509295509295565b600060208284031215611ab257600080fd5b81356117ba81611813565b8183823760009101908152919050565b600181811c90821680611ae157607f821691505b602082108103611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611b8357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611bc257600080fd5b83018035915067ffffffffffffffff821115611bdd57600080fd5b6020019150368190038213156116df57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610515576000816000526020600020601f850160051c81016020861015611c4a5750805b601f850160051c820191505b8181101561087657828155600101611c56565b67ffffffffffffffff831115611c8157611c81611bf2565b611c9583611c8f8354611acd565b83611c21565b6000601f841160018114611ce75760008515611cb15750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556107f6565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015611d365786850135825560209485019460019092019101611d16565b5086821015611d71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b600060408284031215611d9557600080fd5b6040516040810181811067ffffffffffffffff82111715611db857611db8611bf2565b6040528235611dc681611813565b81526020928301359281019290925250919050565b6000604067ffffffffffffffff851683526020604081850152845160a06040860152611e0a60e086018261175d565b9050818601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080878403016060880152611e45838361175d565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015611ea6578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001939093019290860190611e67565b50606089015173ffffffffffffffffffffffffffffffffffffffff1660a08901526080890151888203830160c08a01529550611ee2818761175d565b9a9950505050505050505050565b600060208284031215611f0257600080fd5b5051919050565b80820180821115611f43577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b600060208284031215611f5b57600080fd5b815180151581146117ba57600080fd5b60008251611b8381846020870161173956fea164736f6c6343000818000a", } @@ -247,11 +247,11 @@ func (_CCIPSender *CCIPSenderCallerSession) Owner() (common.Address, error) { return _CCIPSender.Contract.Owner(&_CCIPSender.CallOpts) } -func (_CCIPSender *CCIPSenderCaller) SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, +func (_CCIPSender *CCIPSenderCaller) SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) { var out []interface{} - err := _CCIPSender.contract.Call(opts, &out, "s_chainConfigs", arg0) + err := _CCIPSender.contract.Call(opts, &out, "s_chainConfigs", destChainSelector) outstruct := new(SChainConfigs) if err != nil { @@ -266,16 +266,16 @@ func (_CCIPSender *CCIPSenderCaller) SChainConfigs(opts *bind.CallOpts, arg0 uin } -func (_CCIPSender *CCIPSenderSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_CCIPSender *CCIPSenderSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _CCIPSender.Contract.SChainConfigs(&_CCIPSender.CallOpts, arg0) + return _CCIPSender.Contract.SChainConfigs(&_CCIPSender.CallOpts, destChainSelector) } -func (_CCIPSender *CCIPSenderCallerSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_CCIPSender *CCIPSenderCallerSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _CCIPSender.Contract.SChainConfigs(&_CCIPSender.CallOpts, arg0) + return _CCIPSender.Contract.SChainConfigs(&_CCIPSender.CallOpts, destChainSelector) } func (_CCIPSender *CCIPSenderCaller) TypeAndVersion(opts *bind.CallOpts) (string, error) { @@ -963,7 +963,7 @@ type CCIPSenderInterface interface { Owner(opts *bind.CallOpts) (common.Address, error) - SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, + SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) diff --git a/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go b/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go index cba0ab7ac8..6f043ea949 100644 --- a/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go +++ b/core/gethwrappers/ccip/generated/ping_pong_demo/ping_pong_demo.go @@ -49,8 +49,8 @@ type ClientEVMTokenAmount struct { } var PingPongDemoMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Ping\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Pong\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"modifyFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpartAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"}],\"name\":\"setCounterpartChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620046bf380380620046bf833981016040819052620000349162000563565b8181818181803380600081620000915760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c457620000c4816200013f565b5050506001600160a01b038116620000ef576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03908116608052600780546001600160a01b03191691841691821790551590506200013357620001336001600160a01b03821683600019620001ea565b50505050505062000688565b336001600160a01b03821603620001995760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000088565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620005a2565b6200026e9190620005bc565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002ca91869190620002d016565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200031f906001600160a01b038516908490620003a6565b805190915015620003a15780806020019051810190620003409190620005e4565b620003a15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000088565b505050565b6060620003b78484600085620003bf565b949350505050565b606082471015620004225760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000088565b600080866001600160a01b0316858760405162000440919062000635565b60006040518083038185875af1925050503d80600081146200047f576040519150601f19603f3d011682016040523d82523d6000602084013e62000484565b606091505b5090925090506200049887838387620004a3565b979650505050505050565b60608315620005175782516000036200050f576001600160a01b0385163b6200050f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000088565b5081620003b7565b620003b783838151156200052e5781518083602001fd5b8060405162461bcd60e51b815260040162000088919062000653565b6001600160a01b03811681146200056057600080fd5b50565b600080604083850312156200057757600080fd5b825162000584816200054a565b602084015190925062000597816200054a565b809150509250929050565b600060208284031215620005b557600080fd5b5051919050565b80820180821115620005de57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005f757600080fd5b815180151581146200060857600080fd5b9392505050565b60005b838110156200062c57818101518382015260200162000612565b50506000910152565b60008251620006498184602087016200060f565b9190910192915050565b6020815260008251806020840152620006748160408501602087016200060f565b601f01601f19169190910160400192915050565b608051613ff1620006ce6000396000818161057e01528181610759015281816107e90152818161137301528181612033015281816120fc01526121d40152613ff16000f3fe6080604052600436106101dc5760003560e01c80636fef519e11610102578063b5a1101111610095578063e4ca875411610064578063e4ca875414610663578063e89b448514610683578063f2fde38b14610696578063ff2deec3146106b657600080fd5b8063b5a11011146105da578063bee518a4146105fa578063cf6730f814610623578063d8469e401461064357600080fd5b80638da5cb5b116100d15780638da5cb5b146105245780639d2aede51461054f578063b0f479a11461056f578063b187bd26146105a257600080fd5b80636fef519e1461048657806379ba5097146104cf5780638462a2b9146104e457806385572ffb1461050457600080fd5b80632b6e5d631161017a578063536c6bfa11610149578063536c6bfa146103f95780635e35359e146104195780636939cd97146104395780636d62d6331461046657600080fd5b80632b6e5d631461032457806335f170ef1461037c57806341eade46146103ab5780635075a9d4146103cb57600080fd5b806316c38b3c116101b657806316c38b3c14610280578063181f5a77146102a05780631892b906146102ef5780632874d8bf1461030f57600080fd5b806305bfe982146101e85780630e958d6b1461022e57806311e85dff1461025e57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610218610203366004612ee6565b60086020526000908152604090205460ff1681565b6040516102259190612eff565b60405180910390f35b34801561023a57600080fd5b5061024e610249366004612f9f565b6106e3565b6040519015158152602001610225565b34801561026a57600080fd5b5061027e610279366004613016565b61072e565b005b34801561028c57600080fd5b5061027e61029b366004613041565b6108a6565b3480156102ac57600080fd5b5060408051808201909152601281527f50696e67506f6e6744656d6f20312e332e30000000000000000000000000000060208201525b60405161022591906130cc565b3480156102fb57600080fd5b5061027e61030a3660046130df565b610900565b34801561031b57600080fd5b5061027e610943565b34801561033057600080fd5b5060095468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610225565b34801561038857600080fd5b5061039c6103973660046130df565b61097f565b604051610225939291906130fc565b3480156103b757600080fd5b5061027e6103c63660046130df565b610ab6565b3480156103d757600080fd5b506103eb6103e6366004612ee6565b610b01565b604051908152602001610225565b34801561040557600080fd5b5061027e610414366004613133565b610b14565b34801561042557600080fd5b5061027e61043436600461315f565b610b2a565b34801561044557600080fd5b50610459610454366004612ee6565b610b58565b60405161022591906131fd565b34801561047257600080fd5b5061027e61048136600461329a565b610d63565b34801561049257600080fd5b506102e26040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b3480156104db57600080fd5b5061027e61107d565b3480156104f057600080fd5b5061027e6104ff36600461330f565b61117a565b34801561051057600080fd5b5061027e61051f36600461337b565b61135b565b34801561053057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610357565b34801561055b57600080fd5b5061027e61056a366004613016565b611656565b34801561057b57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610357565b3480156105ae57600080fd5b506009547c0100000000000000000000000000000000000000000000000000000000900460ff1661024e565b3480156105e657600080fd5b5061027e6105f53660046133b6565b611710565b34801561060657600080fd5b5060095460405167ffffffffffffffff9091168152602001610225565b34801561062f57600080fd5b5061027e61063e36600461337b565b611883565b34801561064f57600080fd5b5061027e61065e3660046133e4565b611a70565b34801561066f57600080fd5b5061027e61067e366004612ee6565b611aef565b6103eb61069136600461359c565b611d58565b3480156106a257600080fd5b5061027e6106b1366004613016565b6122dc565b3480156106c257600080fd5b506007546103579073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260026020526040808220905160039091019061071290859085906136a9565b9081526040519081900360200190205460ff1690509392505050565b6107366122f0565b60075473ffffffffffffffffffffffffffffffffffffffff1615610799576107997f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16906000612371565b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015610848576108487f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612571565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4a1cb6b940121ea2ba30fb9b494035cbfe2d4b6b080db8b502150410bef7eb4e60405160405180910390a35050565b6108ae6122f0565b600980549115157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6109086122f0565b600980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b61094b6122f0565b600980547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905561097d6001612675565b565b6002602052600090815260409020805460018201805460ff90921692916109a5906136b9565b80601f01602080910402602001604051908101604052809291908181526020018280546109d1906136b9565b8015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b505050505090806002018054610a33906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5f906136b9565b8015610aac5780601f10610a8157610100808354040283529160200191610aac565b820191906000526020600020905b815481529060010190602001808311610a8f57829003601f168201915b5050505050905083565b610abe6122f0565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000610b0e600483612782565b92915050565b610b1c6122f0565b610b268282612795565b5050565b610b326122f0565b610b5373ffffffffffffffffffffffffffffffffffffffff841683836128ef565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610bc7906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf3906136b9565b8015610c405780601f10610c1557610100808354040283529160200191610c40565b820191906000526020600020905b815481529060010190602001808311610c2357829003601f168201915b50505050508152602001600382018054610c59906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c85906136b9565b8015610cd25780601f10610ca757610100808354040283529160200191610cd2565b820191906000526020600020905b815481529060010190602001808311610cb557829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d555760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610d00565b505050915250909392505050565b610d6b6122f0565b6001610d78600484612782565b14610db7576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610dc78260025b60049190612945565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610e0f906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b906136b9565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b50505050508152602001600382018054610ea1906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecd906136b9565b8015610f1a5780601f10610eef57610100808354040283529160200191610f1a565b820191906000526020600020905b815481529060010190602001808311610efd57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610f9d5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610f48565b5050505081525050905060005b81608001515181101561102c576110248383608001518381518110610fd157610fd161370c565b60200260200101516020015184608001518481518110610ff357610ff361370c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166128ef9092919063ffffffff16565b600101610faa565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146110fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610dae565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6111826122f0565b60005b8181101561126557600260008484848181106111a3576111a361370c565b90506020028101906111b5919061373b565b6111c39060208101906130df565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018383838181106111fa576111fa61370c565b905060200281019061120c919061373b565b61121a906020810190613779565b6040516112289291906136a9565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611185565b5060005b83811015611354576001600260008787858181106112895761128961370c565b905060200281019061129b919061373b565b6112a99060208101906130df565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018686848181106112e0576112e061370c565b90506020028101906112f2919061373b565b611300906020810190613779565b60405161130e9291906136a9565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055600101611269565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146113cc576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610dae565b6113dc60408201602083016130df565b6113e96040830183613779565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600260205260409081902090516003909101935061144792508491506137de565b9081526040519081900360200190205460ff1661149257806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610dae91906130cc565b6114a260408401602085016130df565b67ffffffffffffffff811660009081526002602052604090206001810180546114ca906136b9565b159050806114d95750805460ff165b1561151c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610dae565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906115589088906004016138f2565b600060405180830381600087803b15801561157257600080fd5b505af1925050508015611583575060015b611623573d8080156115b1576040519150601f19603f3d011682016040523d82523d6000602084013e6115b6565b606091505b506115c386356001610dbe565b508535600090815260036020526040902086906115e08282613cc4565b50506040518635907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906116159084906130cc565b60405180910390a250611354565b6040518535907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25050505050565b61165e6122f0565b600980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84169081029190911790915560408051602081019290925201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815260095467ffffffffffffffff16600090815260026020522060010190610b269082613dbe565b6117186122f0565b6009805467ffffffffffffffff84167fffffffff0000000000000000000000000000000000000000000000000000000090911681176801000000000000000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179092556000908152600260209081526040918290208251918201939093526001926003019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526117d3916137de565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff8416600090815260026020522060010190610b539082613dbe565b3330146118bc576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118cc60408201602083016130df565b6118d96040830183613779565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600260205260409081902090516003909101935061193792508491506137de565b9081526040519081900360200190205460ff1661198257806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610dae91906130cc565b61199260408401602085016130df565b67ffffffffffffffff811660009081526002602052604090206001810180546119ba906136b9565b159050806119c95750805460ff165b15611a0c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610dae565b6000611a1b6060870187613779565b810190611a289190612ee6565b6009549091507c0100000000000000000000000000000000000000000000000000000000900460ff16611a6857611a68611a63826001613ed8565b612675565b505050505050565b611a786122f0565b67ffffffffffffffff8516600090815260026020526040902060018101611aa0858783613a48565b508115611ab85760028101611ab6838583613a48565b505b805460ff1615611a685780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050505050565b611af76122f0565b6001611b04600483612782565b14611b3e576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610dae565b611b49816000610dbe565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611b91906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbd906136b9565b8015611c0a5780601f10611bdf57610100808354040283529160200191611c0a565b820191906000526020600020905b815481529060010190602001808311611bed57829003601f168201915b50505050508152602001600382018054611c23906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4f906136b9565b8015611c9c5780601f10611c7157610100808354040283529160200191611c9c565b820191906000526020600020905b815481529060010190602001808311611c7f57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611d1f5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611cca565b5050505081525050905060405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff8316600090815260026020526040812060018101805486929190611d84906136b9565b15905080611d935750805460ff165b15611dd6576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610dae565b6040805160a08101825267ffffffffffffffff8816600090815260026020529182206001018054829190611e09906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611e35906136b9565b8015611e825780601f10611e5757610100808354040283529160200191611e82565b820191906000526020600020905b815481529060010190602001808311611e6557829003601f168201915b5050509183525050602080820188905260408083018a905260075473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b16600090815260029283905220018054608090920191611ee1906136b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0d906136b9565b8015611f5a5780601f10611f2f57610100808354040283529160200191611f5a565b820191906000526020600020905b815481529060010190602001808311611f3d57829003601f168201915b5050505050815250905060005b86518110156120bb57611fd73330898481518110611f8757611f8761370c565b6020026020010151602001518a8581518110611fa557611fa561370c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1661295a909392919063ffffffff16565b600754875173ffffffffffffffffffffffffffffffffffffffff909116908890839081106120075761200761370c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146120b3576120b37f00000000000000000000000000000000000000000000000000000000000000008883815181106120645761206461370c565b6020026020010151602001518984815181106120825761208261370c565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166125719092919063ffffffff16565b600101611f67565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded90612133908b908690600401613eeb565b602060405180830381865afa158015612150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121749190613fae565b60075490915073ffffffffffffffffffffffffffffffffffffffff16156121ba576007546121ba9073ffffffffffffffffffffffffffffffffffffffff1633308461295a565b60075473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f991161561220957600061220b565b825b8a856040518463ffffffff1660e01b815260040161222a929190613eeb565b60206040518083038185885af1158015612248573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061226d9190613fae565b60008181526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b6122e46122f0565b6122ed816129b8565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610dae565b80158061241157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156123eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240f9190613fae565b155b61249d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610dae565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b539084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612aad565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260c9190613fae565b6126169190613ed8565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061266f9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016124ef565b50505050565b806001166001036126b8576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a16126ec565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b60008160405160200161270191815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600954600080855260208501909352909350610b539267ffffffffffffffff9091169161277b565b60408051808201909152600080825260208201528152602001906001900390816127545790505b5083611d58565b600061278e8383612bb9565b9392505050565b804710156127ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610dae565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612859576040519150601f19603f3d011682016040523d82523d6000602084013e61285e565b606091505b5050905080610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610dae565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b539084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016124ef565b6000612952848484612c43565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016124ef565b3373ffffffffffffffffffffffffffffffffffffffff821603612a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610dae565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612b0f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612c609092919063ffffffff16565b805190915015610b535780806020019051810190612b2d9190613fc7565b610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dae565b600081815260028301602052604081205480151580612bdd5750612bdd8484612c6f565b61278e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610dae565b600082815260028401602052604081208290556129528484612c7b565b60606129528484600085612c87565b600061278e8383612da0565b600061278e8383612db8565b606082471015612d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dae565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612d4291906137de565b60006040518083038185875af1925050503d8060008114612d7f576040519150601f19603f3d011682016040523d82523d6000602084013e612d84565b606091505b5091509150612d9587838387612e07565b979650505050505050565b6000818152600183016020526040812054151561278e565b6000818152600183016020526040812054612dff57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b0e565b506000610b0e565b60608315612e9d578251600003612e965773ffffffffffffffffffffffffffffffffffffffff85163b612e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dae565b5081612952565b6129528383815115612eb25781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae91906130cc565b600060208284031215612ef857600080fd5b5035919050565b6020810160038310612f3a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff811681146122ed57600080fd5b60008083601f840112612f6857600080fd5b50813567ffffffffffffffff811115612f8057600080fd5b602083019150836020828501011115612f9857600080fd5b9250929050565b600080600060408486031215612fb457600080fd5b8335612fbf81612f40565b9250602084013567ffffffffffffffff811115612fdb57600080fd5b612fe786828701612f56565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff811681146122ed57600080fd5b60006020828403121561302857600080fd5b813561278e81612ff4565b80151581146122ed57600080fd5b60006020828403121561305357600080fd5b813561278e81613033565b60005b83811015613079578181015183820152602001613061565b50506000910152565b6000815180845261309a81602086016020860161305e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061278e6020830184613082565b6000602082840312156130f157600080fd5b813561278e81612f40565b83151581526060602082015260006131176060830185613082565b82810360408401526131298185613082565b9695505050505050565b6000806040838503121561314657600080fd5b823561315181612ff4565b946020939093013593505050565b60008060006060848603121561317457600080fd5b833561317f81612ff4565b9250602084013561318f81612ff4565b929592945050506040919091013590565b60008151808452602080850194506020840160005b838110156131f2578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016131b5565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261323760c0840182613082565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526132738383613082565b925060808601519150808584030160a08601525061329182826131a0565b95945050505050565b600080604083850312156132ad57600080fd5b8235915060208301356132bf81612ff4565b809150509250929050565b60008083601f8401126132dc57600080fd5b50813567ffffffffffffffff8111156132f457600080fd5b6020830191508360208260051b8501011115612f9857600080fd5b6000806000806040858703121561332557600080fd5b843567ffffffffffffffff8082111561333d57600080fd5b613349888389016132ca565b9096509450602087013591508082111561336257600080fd5b5061336f878288016132ca565b95989497509550505050565b60006020828403121561338d57600080fd5b813567ffffffffffffffff8111156133a457600080fd5b820160a0818503121561278e57600080fd5b600080604083850312156133c957600080fd5b82356133d481612f40565b915060208301356132bf81612ff4565b6000806000806000606086880312156133fc57600080fd5b853561340781612f40565b9450602086013567ffffffffffffffff8082111561342457600080fd5b61343089838a01612f56565b9096509450604088013591508082111561344957600080fd5b5061345688828901612f56565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156134b9576134b9613467565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561350657613506613467565b604052919050565b600082601f83011261351f57600080fd5b813567ffffffffffffffff81111561353957613539613467565b61356a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134bf565b81815284602083860101111561357f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156135b157600080fd5b83356135bc81612f40565b925060208481013567ffffffffffffffff808211156135da57600080fd5b818701915087601f8301126135ee57600080fd5b81358181111561360057613600613467565b61360e848260051b016134bf565b81815260069190911b8301840190848101908a83111561362d57600080fd5b938501935b82851015613679576040858c03121561364b5760008081fd5b613653613496565b853561365e81612ff4565b81528587013587820152825260409094019390850190613632565b96505050604087013592508083111561369157600080fd5b505061369f8682870161350e565b9150509250925092565b8183823760009101908152919050565b600181811c908216806136cd57607f821691505b602082108103613706577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261376f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137ae57600080fd5b83018035915067ffffffffffffffff8211156137c957600080fd5b602001915036819003821315612f9857600080fd5b6000825161376f81846020870161305e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261382557600080fd5b830160208101925035905067ffffffffffffffff81111561384557600080fd5b803603821315612f9857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b858110156131f25781356138c081612ff4565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016138ad565b60208152813560208201526000602083013561390d81612f40565b67ffffffffffffffff808216604085015261392b60408601866137f0565b925060a0606086015261394260c086018483613854565b92505061395260608601866137f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613988858385613854565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030183126139c157600080fd5b602092880192830192359150838211156139da57600080fd5b8160061b36038313156139ec57600080fd5b8685030160a0870152612d9584828461389d565b601f821115610b53576000816000526020600020601f850160051c81016020861015613a295750805b601f850160051c820191505b81811015611a6857828155600101613a35565b67ffffffffffffffff831115613a6057613a60613467565b613a7483613a6e83546136b9565b83613a00565b6000601f841160018114613ac65760008515613a905750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611354565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613b155786850135825560209485019460019092019101613af5565b5086821015613b50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8135613b9c81612ff4565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b68010000000000000000831115613c0257613c02613467565b805483825580841015613c8f5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314613c4357613c43613b62565b8086168614613c5457613c54613b62565b5060008360005260206000208360011b81018760011b820191505b80821015613c8a578282558284830155600282019150613c6f565b505050505b5060008181526020812083915b85811015611a6857613cae8383613b91565b6040929092019160029190910190600101613c9c565b81358155600181016020830135613cda81612f40565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000845416178355613d1a6040860186613779565b93509150613d2c838360028701613a48565b613d396060860186613779565b93509150613d4b838360038701613a48565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018312613d8257600080fd5b918401918235915080821115613d9757600080fd5b506020820191508060061b3603821315613db057600080fd5b61266f818360048601613be9565b815167ffffffffffffffff811115613dd857613dd8613467565b613dec81613de684546136b9565b84613a00565b602080601f831160018114613e3f5760008415613e095750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611a68565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613e8c57888601518255948401946001909101908401613e6d565b5085821015613ec857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610b0e57610b0e613b62565b67ffffffffffffffff83168152604060208201526000825160a06040840152613f1760e0840182613082565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080858403016060860152613f538383613082565b92506040860151915080858403016080860152613f7083836131a0565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506131298282613082565b600060208284031215613fc057600080fd5b5051919050565b600060208284031215613fd957600080fd5b815161278e8161303356fea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Ping\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Pong\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"modifyFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpartAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"}],\"name\":\"setCounterpartChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60a06040523480156200001157600080fd5b50604051620046c8380380620046c8833981016040819052620000349162000563565b8181818181803380600081620000915760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c457620000c4816200013f565b5050506001600160a01b038116620000ef576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03908116608052600780546001600160a01b03191691841691821790551590506200013357620001336001600160a01b03821683600019620001ea565b50505050505062000688565b336001600160a01b03821603620001995760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000088565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620005a2565b6200026e9190620005bc565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002ca91869190620002d016565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200031f906001600160a01b038516908490620003a6565b805190915015620003a15780806020019051810190620003409190620005e4565b620003a15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000088565b505050565b6060620003b78484600085620003bf565b949350505050565b606082471015620004225760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000088565b600080866001600160a01b0316858760405162000440919062000635565b60006040518083038185875af1925050503d80600081146200047f576040519150601f19603f3d011682016040523d82523d6000602084013e62000484565b606091505b5090925090506200049887838387620004a3565b979650505050505050565b60608315620005175782516000036200050f576001600160a01b0385163b6200050f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000088565b5081620003b7565b620003b783838151156200052e5781518083602001fd5b8060405162461bcd60e51b815260040162000088919062000653565b6001600160a01b03811681146200056057600080fd5b50565b600080604083850312156200057757600080fd5b825162000584816200054a565b602084015190925062000597816200054a565b809150509250929050565b600060208284031215620005b557600080fd5b5051919050565b80820180821115620005de57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005f757600080fd5b815180151581146200060857600080fd5b9392505050565b60005b838110156200062c57818101518382015260200162000612565b50506000910152565b60008251620006498184602087016200060f565b9190910192915050565b6020815260008251806020840152620006748160408501602087016200060f565b601f01601f19169190910160400192915050565b608051613ffa620006ce6000396000818161057e01528181610759015281816107e90152818161137301528181612034015281816120fd01526121d50152613ffa6000f3fe6080604052600436106101dc5760003560e01c80636fef519e11610102578063b5a1101111610095578063e4ca875411610064578063e4ca875414610663578063e89b448514610683578063f2fde38b14610696578063ff2deec3146106b657600080fd5b8063b5a11011146105da578063bee518a4146105fa578063cf6730f814610623578063d8469e401461064357600080fd5b80638da5cb5b116100d15780638da5cb5b146105245780639d2aede51461054f578063b0f479a11461056f578063b187bd26146105a257600080fd5b80636fef519e1461048657806379ba5097146104cf5780638462a2b9146104e457806385572ffb1461050457600080fd5b80632b6e5d631161017a578063536c6bfa11610149578063536c6bfa146103f95780635e35359e146104195780636939cd97146104395780636d62d6331461046657600080fd5b80632b6e5d631461032457806335f170ef1461037c57806341eade46146103ab5780635075a9d4146103cb57600080fd5b806316c38b3c116101b657806316c38b3c14610280578063181f5a77146102a05780631892b906146102ef5780632874d8bf1461030f57600080fd5b806305bfe982146101e85780630e958d6b1461022e57806311e85dff1461025e57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50610218610203366004612eef565b60086020526000908152604090205460ff1681565b6040516102259190612f08565b60405180910390f35b34801561023a57600080fd5b5061024e610249366004612fa8565b6106e3565b6040519015158152602001610225565b34801561026a57600080fd5b5061027e61027936600461301f565b61072e565b005b34801561028c57600080fd5b5061027e61029b36600461304a565b6108a6565b3480156102ac57600080fd5b5060408051808201909152601281527f50696e67506f6e6744656d6f20312e332e30000000000000000000000000000060208201525b60405161022591906130d5565b3480156102fb57600080fd5b5061027e61030a3660046130e8565b610900565b34801561031b57600080fd5b5061027e610943565b34801561033057600080fd5b5060095468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610225565b34801561038857600080fd5b5061039c6103973660046130e8565b61097f565b60405161022593929190613105565b3480156103b757600080fd5b5061027e6103c63660046130e8565b610ab6565b3480156103d757600080fd5b506103eb6103e6366004612eef565b610b01565b604051908152602001610225565b34801561040557600080fd5b5061027e61041436600461313c565b610b14565b34801561042557600080fd5b5061027e610434366004613168565b610b2a565b34801561044557600080fd5b50610459610454366004612eef565b610b58565b6040516102259190613206565b34801561047257600080fd5b5061027e6104813660046132a3565b610d63565b34801561049257600080fd5b506102e26040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b3480156104db57600080fd5b5061027e61107d565b3480156104f057600080fd5b5061027e6104ff366004613318565b61117a565b34801561051057600080fd5b5061027e61051f366004613384565b61135b565b34801561053057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610357565b34801561055b57600080fd5b5061027e61056a36600461301f565b611656565b34801561057b57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610357565b3480156105ae57600080fd5b506009547c0100000000000000000000000000000000000000000000000000000000900460ff1661024e565b3480156105e657600080fd5b5061027e6105f53660046133bf565b611710565b34801561060657600080fd5b5060095460405167ffffffffffffffff9091168152602001610225565b34801561062f57600080fd5b5061027e61063e366004613384565b611883565b34801561064f57600080fd5b5061027e61065e3660046133ed565b611a70565b34801561066f57600080fd5b5061027e61067e366004612eef565b611aef565b6103eb6106913660046135a5565b611d59565b3480156106a257600080fd5b5061027e6106b136600461301f565b6122dd565b3480156106c257600080fd5b506007546103579073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff8316600090815260026020526040808220905160039091019061071290859085906136b2565b9081526040519081900360200190205460ff1690509392505050565b6107366122f1565b60075473ffffffffffffffffffffffffffffffffffffffff1615610799576107997f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16906000612372565b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015610848576108487f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612572565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4a1cb6b940121ea2ba30fb9b494035cbfe2d4b6b080db8b502150410bef7eb4e60405160405180910390a35050565b6108ae6122f1565b600980549115157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6109086122f1565b600980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b61094b6122f1565b600980547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905561097d6001612676565b565b6002602052600090815260409020805460018201805460ff90921692916109a5906136c2565b80601f01602080910402602001604051908101604052809291908181526020018280546109d1906136c2565b8015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b505050505090806002018054610a33906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5f906136c2565b8015610aac5780601f10610a8157610100808354040283529160200191610aac565b820191906000526020600020905b815481529060010190602001808311610a8f57829003601f168201915b5050505050905083565b610abe6122f1565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000610b0e600483612783565b92915050565b610b1c6122f1565b610b268282612796565b5050565b610b326122f1565b610b5373ffffffffffffffffffffffffffffffffffffffff841683836128f0565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610bc7906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf3906136c2565b8015610c405780601f10610c1557610100808354040283529160200191610c40565b820191906000526020600020905b815481529060010190602001808311610c2357829003601f168201915b50505050508152602001600382018054610c59906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610c85906136c2565b8015610cd25780601f10610ca757610100808354040283529160200191610cd2565b820191906000526020600020905b815481529060010190602001808311610cb557829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610d555760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610d00565b505050915250909392505050565b610d6b6122f1565b6001610d78600484612783565b14610db7576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610dc78260025b60049190612946565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610e0f906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b906136c2565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b50505050508152602001600382018054610ea1906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecd906136c2565b8015610f1a5780601f10610eef57610100808354040283529160200191610f1a565b820191906000526020600020905b815481529060010190602001808311610efd57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610f9d5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610f48565b5050505081525050905060005b81608001515181101561102c576110248383608001518381518110610fd157610fd1613715565b60200260200101516020015184608001518481518110610ff357610ff3613715565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166128f09092919063ffffffff16565b600101610faa565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146110fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610dae565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6111826122f1565b60005b8181101561126557600260008484848181106111a3576111a3613715565b90506020028101906111b59190613744565b6111c39060208101906130e8565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018383838181106111fa576111fa613715565b905060200281019061120c9190613744565b61121a906020810190613782565b6040516112289291906136b2565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611185565b5060005b838110156113545760016002600087878581811061128957611289613715565b905060200281019061129b9190613744565b6112a99060208101906130e8565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018686848181106112e0576112e0613715565b90506020028101906112f29190613744565b611300906020810190613782565b60405161130e9291906136b2565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055600101611269565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146113cc576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610dae565b6113dc60408201602083016130e8565b6113e96040830183613782565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600260205260409081902090516003909101935061144792508491506137e7565b9081526040519081900360200190205460ff1661149257806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610dae91906130d5565b6114a260408401602085016130e8565b67ffffffffffffffff811660009081526002602052604090206001810180546114ca906136c2565b159050806114d95750805460ff165b1561151c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610dae565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f8906115589088906004016138fb565b600060405180830381600087803b15801561157257600080fd5b505af1925050508015611583575060015b611623573d8080156115b1576040519150601f19603f3d011682016040523d82523d6000602084013e6115b6565b606091505b506115c386356001610dbe565b508535600090815260036020526040902086906115e08282613ccd565b50506040518635907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906116159084906130d5565b60405180910390a250611354565b6040518535907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25050505050565b61165e6122f1565b600980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84169081029190911790915560408051602081019290925201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815260095467ffffffffffffffff16600090815260026020522060010190610b269082613dc7565b6117186122f1565b6009805467ffffffffffffffff84167fffffffff0000000000000000000000000000000000000000000000000000000090911681176801000000000000000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179092556000908152600260209081526040918290208251918201939093526001926003019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526117d3916137e7565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff8416600090815260026020522060010190610b539082613dc7565b3330146118bc576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118cc60408201602083016130e8565b6118d96040830183613782565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff86168152600260205260409081902090516003909101935061193792508491506137e7565b9081526040519081900360200190205460ff1661198257806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610dae91906130d5565b61199260408401602085016130e8565b67ffffffffffffffff811660009081526002602052604090206001810180546119ba906136c2565b159050806119c95750805460ff165b15611a0c576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610dae565b6000611a1b6060870187613782565b810190611a289190612eef565b6009549091507c0100000000000000000000000000000000000000000000000000000000900460ff16611a6857611a68611a63826001613ee1565b612676565b505050505050565b611a786122f1565b67ffffffffffffffff8516600090815260026020526040902060018101611aa0858783613a51565b508115611ab85760028101611ab6838583613a51565b505b805460ff1615611a685780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050505050565b6001611afc600483612783565b14611b36576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610dae565b611b41816000610dbe565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611b89906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611bb5906136c2565b8015611c025780601f10611bd757610100808354040283529160200191611c02565b820191906000526020600020905b815481529060010190602001808311611be557829003601f168201915b50505050508152602001600382018054611c1b906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611c47906136c2565b8015611c945780601f10611c6957610100808354040283529160200191611c94565b820191906000526020600020905b815481529060010190602001808311611c7757829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611d175760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611cc2565b50505050815250509050611d2a8161295b565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff8316600090815260026020526040812060018101805486929190611d85906136c2565b15905080611d945750805460ff165b15611dd7576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610dae565b6040805160a08101825267ffffffffffffffff8816600090815260026020529182206001018054829190611e0a906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611e36906136c2565b8015611e835780601f10611e5857610100808354040283529160200191611e83565b820191906000526020600020905b815481529060010190602001808311611e6657829003601f168201915b5050509183525050602080820188905260408083018a905260075473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b16600090815260029283905220018054608090920191611ee2906136c2565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0e906136c2565b8015611f5b5780601f10611f3057610100808354040283529160200191611f5b565b820191906000526020600020905b815481529060010190602001808311611f3e57829003601f168201915b5050505050815250905060005b86518110156120bc57611fd83330898481518110611f8857611f88613715565b6020026020010151602001518a8581518110611fa657611fa6613715565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612963909392919063ffffffff16565b600754875173ffffffffffffffffffffffffffffffffffffffff9091169088908390811061200857612008613715565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146120b4576120b47f000000000000000000000000000000000000000000000000000000000000000088838151811061206557612065613715565b60200260200101516020015189848151811061208357612083613715565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166125729092919063ffffffff16565b600101611f68565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded90612134908b908690600401613ef4565b602060405180830381865afa158015612151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121759190613fb7565b60075490915073ffffffffffffffffffffffffffffffffffffffff16156121bb576007546121bb9073ffffffffffffffffffffffffffffffffffffffff16333084612963565b60075473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f991161561220a57600061220c565b825b8a856040518463ffffffff1660e01b815260040161222b929190613ef4565b60206040518083038185885af1158015612249573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061226e9190613fb7565b60008181526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b6122e56122f1565b6122ee816129c1565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610dae565b80158061241257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190613fb7565b155b61249e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610dae565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b539084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612ab6565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156125e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260d9190613fb7565b6126179190613ee1565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506126709085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016124f0565b50505050565b806001166001036126b9576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a16126ed565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b60008160405160200161270291815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600954600080855260208501909352909350610b539267ffffffffffffffff9091169161277c565b60408051808201909152600080825260208201528152602001906001900390816127555790505b5083611d59565b600061278f8383612bc2565b9392505050565b80471015612800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610dae565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461285a576040519150601f19603f3d011682016040523d82523d6000602084013e61285f565b606091505b5050905080610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610dae565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b539084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016124f0565b6000612953848484612c4c565b949350505050565b6122ee6122f1565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526126709085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016124f0565b3373ffffffffffffffffffffffffffffffffffffffff821603612a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610dae565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612b18826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612c699092919063ffffffff16565b805190915015610b535780806020019051810190612b369190613fd0565b610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610dae565b600081815260028301602052604081205480151580612be65750612be68484612c78565b61278f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610dae565b600082815260028401602052604081208290556129538484612c84565b60606129538484600085612c90565b600061278f8383612da9565b600061278f8383612dc1565b606082471015612d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610dae565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612d4b91906137e7565b60006040518083038185875af1925050503d8060008114612d88576040519150601f19603f3d011682016040523d82523d6000602084013e612d8d565b606091505b5091509150612d9e87838387612e10565b979650505050505050565b6000818152600183016020526040812054151561278f565b6000818152600183016020526040812054612e0857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b0e565b506000610b0e565b60608315612ea6578251600003612e9f5773ffffffffffffffffffffffffffffffffffffffff85163b612e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dae565b5081612953565b6129538383815115612ebb5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae91906130d5565b600060208284031215612f0157600080fd5b5035919050565b6020810160038310612f43577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff811681146122ee57600080fd5b60008083601f840112612f7157600080fd5b50813567ffffffffffffffff811115612f8957600080fd5b602083019150836020828501011115612fa157600080fd5b9250929050565b600080600060408486031215612fbd57600080fd5b8335612fc881612f49565b9250602084013567ffffffffffffffff811115612fe457600080fd5b612ff086828701612f5f565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff811681146122ee57600080fd5b60006020828403121561303157600080fd5b813561278f81612ffd565b80151581146122ee57600080fd5b60006020828403121561305c57600080fd5b813561278f8161303c565b60005b8381101561308257818101518382015260200161306a565b50506000910152565b600081518084526130a3816020860160208601613067565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061278f602083018461308b565b6000602082840312156130fa57600080fd5b813561278f81612f49565b8315158152606060208201526000613120606083018561308b565b8281036040840152613132818561308b565b9695505050505050565b6000806040838503121561314f57600080fd5b823561315a81612ffd565b946020939093013593505050565b60008060006060848603121561317d57600080fd5b833561318881612ffd565b9250602084013561319881612ffd565b929592945050506040919091013590565b60008151808452602080850194506020840160005b838110156131fb578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016131be565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a0606084015261324060c084018261308b565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301608086015261327c838361308b565b925060808601519150808584030160a08601525061329a82826131a9565b95945050505050565b600080604083850312156132b657600080fd5b8235915060208301356132c881612ffd565b809150509250929050565b60008083601f8401126132e557600080fd5b50813567ffffffffffffffff8111156132fd57600080fd5b6020830191508360208260051b8501011115612fa157600080fd5b6000806000806040858703121561332e57600080fd5b843567ffffffffffffffff8082111561334657600080fd5b613352888389016132d3565b9096509450602087013591508082111561336b57600080fd5b50613378878288016132d3565b95989497509550505050565b60006020828403121561339657600080fd5b813567ffffffffffffffff8111156133ad57600080fd5b820160a0818503121561278f57600080fd5b600080604083850312156133d257600080fd5b82356133dd81612f49565b915060208301356132c881612ffd565b60008060008060006060868803121561340557600080fd5b853561341081612f49565b9450602086013567ffffffffffffffff8082111561342d57600080fd5b61343989838a01612f5f565b9096509450604088013591508082111561345257600080fd5b5061345f88828901612f5f565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156134c2576134c2613470565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561350f5761350f613470565b604052919050565b600082601f83011261352857600080fd5b813567ffffffffffffffff81111561354257613542613470565b61357360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134c8565b81815284602083860101111561358857600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156135ba57600080fd5b83356135c581612f49565b925060208481013567ffffffffffffffff808211156135e357600080fd5b818701915087601f8301126135f757600080fd5b81358181111561360957613609613470565b613617848260051b016134c8565b81815260069190911b8301840190848101908a83111561363657600080fd5b938501935b82851015613682576040858c0312156136545760008081fd5b61365c61349f565b853561366781612ffd565b8152858701358782015282526040909401939085019061363b565b96505050604087013592508083111561369a57600080fd5b50506136a886828701613517565b9150509250925092565b8183823760009101908152919050565b600181811c908216806136d657607f821691505b60208210810361370f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261377857600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126137b757600080fd5b83018035915067ffffffffffffffff8211156137d257600080fd5b602001915036819003821315612fa157600080fd5b60008251613778818460208701613067565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261382e57600080fd5b830160208101925035905067ffffffffffffffff81111561384e57600080fd5b803603821315612fa157600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b858110156131fb5781356138c981612ffd565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016138b6565b60208152813560208201526000602083013561391681612f49565b67ffffffffffffffff808216604085015261393460408601866137f9565b925060a0606086015261394b60c08601848361385d565b92505061395b60608601866137f9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08087860301608088015261399185838561385d565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030183126139ca57600080fd5b602092880192830192359150838211156139e357600080fd5b8160061b36038313156139f557600080fd5b8685030160a0870152612d9e8482846138a6565b601f821115610b53576000816000526020600020601f850160051c81016020861015613a325750805b601f850160051c820191505b81811015611a6857828155600101613a3e565b67ffffffffffffffff831115613a6957613a69613470565b613a7d83613a7783546136c2565b83613a09565b6000601f841160018114613acf5760008515613a995750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611354565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613b1e5786850135825560209485019460019092019101613afe565b5086821015613b59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8135613ba581612ffd565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b68010000000000000000831115613c0b57613c0b613470565b805483825580841015613c985760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168314613c4c57613c4c613b6b565b8086168614613c5d57613c5d613b6b565b5060008360005260206000208360011b81018760011b820191505b80821015613c93578282558284830155600282019150613c78565b505050505b5060008181526020812083915b85811015611a6857613cb78383613b9a565b6040929092019160029190910190600101613ca5565b81358155600181016020830135613ce381612f49565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000845416178355613d236040860186613782565b93509150613d35838360028701613a51565b613d426060860186613782565b93509150613d54838360038701613a51565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018312613d8b57600080fd5b918401918235915080821115613da057600080fd5b506020820191508060061b3603821315613db957600080fd5b612670818360048601613bf2565b815167ffffffffffffffff811115613de157613de1613470565b613df581613def84546136c2565b84613a09565b602080601f831160018114613e485760008415613e125750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611a68565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613e9557888601518255948401946001909101908401613e76565b5085821015613ed157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610b0e57610b0e613b6b565b67ffffffffffffffff83168152604060208201526000825160a06040840152613f2060e084018261308b565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080858403016060860152613f5c838361308b565b92506040860151915080858403016080860152613f7983836131a9565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c086015250613132828261308b565b600060208284031215613fc957600080fd5b5051919050565b600060208284031215613fe257600080fd5b815161278f8161303c56fea164736f6c6343000818000a", } var PingPongDemoABI = PingPongDemoMetaData.ABI @@ -387,11 +387,11 @@ func (_PingPongDemo *PingPongDemoCallerSession) Owner() (common.Address, error) return _PingPongDemo.Contract.Owner(&_PingPongDemo.CallOpts) } -func (_PingPongDemo *PingPongDemoCaller) SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, +func (_PingPongDemo *PingPongDemoCaller) SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) { var out []interface{} - err := _PingPongDemo.contract.Call(opts, &out, "s_chainConfigs", arg0) + err := _PingPongDemo.contract.Call(opts, &out, "s_chainConfigs", destChainSelector) outstruct := new(SChainConfigs) if err != nil { @@ -406,16 +406,16 @@ func (_PingPongDemo *PingPongDemoCaller) SChainConfigs(opts *bind.CallOpts, arg0 } -func (_PingPongDemo *PingPongDemoSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_PingPongDemo *PingPongDemoSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _PingPongDemo.Contract.SChainConfigs(&_PingPongDemo.CallOpts, arg0) + return _PingPongDemo.Contract.SChainConfigs(&_PingPongDemo.CallOpts, destChainSelector) } -func (_PingPongDemo *PingPongDemoCallerSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_PingPongDemo *PingPongDemoCallerSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _PingPongDemo.Contract.SChainConfigs(&_PingPongDemo.CallOpts, arg0) + return _PingPongDemo.Contract.SChainConfigs(&_PingPongDemo.CallOpts, destChainSelector) } func (_PingPongDemo *PingPongDemoCaller) SFeeToken(opts *bind.CallOpts) (common.Address, error) { @@ -2343,7 +2343,7 @@ type PingPongDemoInterface interface { Owner(opts *bind.CallOpts) (common.Address, error) - SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, + SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) diff --git a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go index 19865a5b71..eb5448c4b5 100644 --- a/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go +++ b/core/gethwrappers/ccip/generated/self_funded_ping_pong/self_funded_ping_pong.go @@ -49,8 +49,8 @@ type ClientEVMTokenAmount struct { } var SelfFundedPingPongMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"roundTripsBeforeFunding\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"countIncrBeforeFunding\",\"type\":\"uint8\"}],\"name\":\"CountIncrBeforeFundingSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Funded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Ping\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Pong\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"fundPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCountIncrBeforeFunding\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"modifyFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"countIncrBeforeFunding\",\"type\":\"uint8\"}],\"name\":\"setCountIncrBeforeFunding\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpartAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"}],\"name\":\"setCounterpartChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040523480156200001157600080fd5b5060405162004c3b38038062004c3b833981016040819052620000349162000591565b82828181818181803380600081620000935760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c657620000c6816200016d565b5050506001600160a01b038116620000f1576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03908116608052600780546001600160a01b03191691841691821790551590506200013557620001356001600160a01b0382168360001962000218565b5050505050508060026200014a919062000600565b6009601d6101000a81548160ff021916908360ff16021790555050505062000700565b336001600160a01b03821603620001c75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200008a565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000626565b6200029c919062000640565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002f891869190620002fe16565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200034d906001600160a01b038516908490620003d4565b805190915015620003cf57808060200190518101906200036e91906200065c565b620003cf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200008a565b505050565b6060620003e58484600085620003ed565b949350505050565b606082471015620004505760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200008a565b600080866001600160a01b031685876040516200046e9190620006ad565b60006040518083038185875af1925050503d8060008114620004ad576040519150601f19603f3d011682016040523d82523d6000602084013e620004b2565b606091505b509092509050620004c687838387620004d1565b979650505050505050565b60608315620005455782516000036200053d576001600160a01b0385163b6200053d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200008a565b5081620003e5565b620003e583838151156200055c5781518083602001fd5b8060405162461bcd60e51b81526004016200008a9190620006cb565b6001600160a01b03811681146200058e57600080fd5b50565b600080600060608486031215620005a757600080fd5b8351620005b48162000578565b6020850151909350620005c78162000578565b604085015190925060ff81168114620005df57600080fd5b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821602908116908181146200061f576200061f620005ea565b5092915050565b6000602082840312156200063957600080fd5b5051919050565b80820180821115620006565762000656620005ea565b92915050565b6000602082840312156200066f57600080fd5b815180151581146200068057600080fd5b9392505050565b60005b83811015620006a45781810151838201526020016200068a565b50506000910152565b60008251620006c181846020870162000687565b9190910192915050565b6020815260008251806020840152620006ec81604085016020870162000687565b601f01601f19169190910160400192915050565b6080516144e762000754600039600081816105e601528181610827015281816108b701528181611441015281816117bf015281816122e5015281816123ae015281816124860152612b7801526144e76000f3fe60806040526004361061021d5760003560e01c80638462a2b91161011d578063bee518a4116100b0578063e6c725f51161007f578063ef686d8e11610064578063ef686d8e14610744578063f2fde38b14610764578063ff2deec31461078457600080fd5b8063e6c725f5146106eb578063e89b44851461073157600080fd5b8063bee518a414610662578063cf6730f81461068b578063d8469e40146106ab578063e4ca8754146106cb57600080fd5b80639d2aede5116100ec5780639d2aede5146105b7578063b0f479a1146105d7578063b187bd261461060a578063b5a110111461064257600080fd5b80638462a2b91461052c57806385572ffb1461054c5780638da5cb5b1461056c5780638f491cba1461059757600080fd5b806335f170ef116101b05780635e35359e1161017f5780636d62d633116101645780636d62d633146104ae5780636fef519e146104ce57806379ba50971461051757600080fd5b80635e35359e146104615780636939cd971461048157600080fd5b806335f170ef146103c457806341eade46146103f35780635075a9d414610413578063536c6bfa1461044157600080fd5b8063181f5a77116101ec578063181f5a77146102e15780631892b906146103375780632874d8bf146103575780632b6e5d631461036c57600080fd5b806305bfe982146102295780630e958d6b1461026f57806311e85dff1461029f57806316c38b3c146102c157600080fd5b3661022457005b600080fd5b34801561023557600080fd5b50610259610244366004613361565b60086020526000908152604090205460ff1681565b604051610266919061337a565b60405180910390f35b34801561027b57600080fd5b5061028f61028a36600461341a565b6107b1565b6040519015158152602001610266565b3480156102ab57600080fd5b506102bf6102ba366004613491565b6107fc565b005b3480156102cd57600080fd5b506102bf6102dc3660046134bc565b610974565b3480156102ed57600080fd5b5061032a6040518060400160405280601881526020017f53656c6646756e64656450696e67506f6e6720312e322e30000000000000000081525081565b6040516102669190613547565b34801561034357600080fd5b506102bf61035236600461355a565b6109ce565b34801561036357600080fd5b506102bf610a11565b34801561037857600080fd5b5060095468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610266565b3480156103d057600080fd5b506103e46103df36600461355a565b610a4d565b60405161026693929190613577565b3480156103ff57600080fd5b506102bf61040e36600461355a565b610b84565b34801561041f57600080fd5b5061043361042e366004613361565b610bcf565b604051908152602001610266565b34801561044d57600080fd5b506102bf61045c3660046135ae565b610be2565b34801561046d57600080fd5b506102bf61047c3660046135da565b610bf8565b34801561048d57600080fd5b506104a161049c366004613361565b610c26565b6040516102669190613678565b3480156104ba57600080fd5b506102bf6104c9366004613715565b610e31565b3480156104da57600080fd5b5061032a6040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b34801561052357600080fd5b506102bf61114b565b34801561053857600080fd5b506102bf61054736600461378a565b611248565b34801561055857600080fd5b506102bf6105673660046137f6565b611429565b34801561057857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661039f565b3480156105a357600080fd5b506102bf6105b2366004613361565b611724565b3480156105c357600080fd5b506102bf6105d2366004613491565b611908565b3480156105e357600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061039f565b34801561061657600080fd5b506009547c0100000000000000000000000000000000000000000000000000000000900460ff1661028f565b34801561064e57600080fd5b506102bf61065d366004613831565b6119c2565b34801561066e57600080fd5b5060095460405167ffffffffffffffff9091168152602001610266565b34801561069757600080fd5b506102bf6106a63660046137f6565b611b35565b3480156106b757600080fd5b506102bf6106c636600461385f565b611d22565b3480156106d757600080fd5b506102bf6106e6366004613361565b611da1565b3480156106f757600080fd5b506009547d010000000000000000000000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610266565b61043361073f366004613a17565b61200a565b34801561075057600080fd5b506102bf61075f366004613b24565b61258e565b34801561077057600080fd5b506102bf61077f366004613491565b61261f565b34801561079057600080fd5b5060075461039f9073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff831660009081526002602052604080822090516003909101906107e09085908590613b47565b9081526040519081900360200190205460ff1690509392505050565b610804612630565b60075473ffffffffffffffffffffffffffffffffffffffff1615610867576108677f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff169060006126b1565b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015610916576109167f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b1565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4a1cb6b940121ea2ba30fb9b494035cbfe2d4b6b080db8b502150410bef7eb4e60405160405180910390a35050565b61097c612630565b600980549115157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6109d6612630565b600980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b610a19612630565b600980547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055610a4b60016129b5565b565b6002602052600090815260409020805460018201805460ff9092169291610a7390613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90613b57565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806002018054610b0190613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613b57565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905083565b610b8c612630565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000610bdc600483612bfd565b92915050565b610bea612630565b610bf48282612c10565b5050565b610c00612630565b610c2173ffffffffffffffffffffffffffffffffffffffff84168383612d6a565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610c9590613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc190613b57565b8015610d0e5780601f10610ce357610100808354040283529160200191610d0e565b820191906000526020600020905b815481529060010190602001808311610cf157829003601f168201915b50505050508152602001600382018054610d2790613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5390613b57565b8015610da05780601f10610d7557610100808354040283529160200191610da0565b820191906000526020600020905b815481529060010190602001808311610d8357829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610e235760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610dce565b505050915250909392505050565b610e39612630565b6001610e46600484612bfd565b14610e85576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610e958260025b60049190612dc0565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610edd90613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0990613b57565b8015610f565780601f10610f2b57610100808354040283529160200191610f56565b820191906000526020600020905b815481529060010190602001808311610f3957829003601f168201915b50505050508152602001600382018054610f6f90613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9b90613b57565b8015610fe85780601f10610fbd57610100808354040283529160200191610fe8565b820191906000526020600020905b815481529060010190602001808311610fcb57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561106b5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611016565b5050505081525050905060005b8160800151518110156110fa576110f2838360800151838151811061109f5761109f613baa565b602002602001015160200151846080015184815181106110c1576110c1613baa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612d6a9092919063ffffffff16565b600101611078565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610e7c565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611250612630565b60005b81811015611333576002600084848481811061127157611271613baa565b90506020028101906112839190613bd9565b61129190602081019061355a565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018383838181106112c8576112c8613baa565b90506020028101906112da9190613bd9565b6112e8906020810190613c17565b6040516112f6929190613b47565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611253565b5060005b838110156114225760016002600087878581811061135757611357613baa565b90506020028101906113699190613bd9565b61137790602081019061355a565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018686848181106113ae576113ae613baa565b90506020028101906113c09190613bd9565b6113ce906020810190613c17565b6040516113dc929190613b47565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055600101611337565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461149a576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610e7c565b6114aa604082016020830161355a565b6114b76040830183613c17565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260026020526040908190209051600390910193506115159250849150613c7c565b9081526040519081900360200190205460ff1661156057806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610e7c9190613547565b611570604084016020850161355a565b67ffffffffffffffff8116600090815260026020526040902060018101805461159890613b57565b159050806115a75750805460ff165b156115ea576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610e7c565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890611626908890600401613d90565b600060405180830381600087803b15801561164057600080fd5b505af1925050508015611651575060015b6116f1573d80801561167f576040519150601f19603f3d011682016040523d82523d6000602084013e611684565b606091505b5061169186356001610e8c565b508535600090815260036020526040902086906116ae8282614162565b50506040518635907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906116e3908490613547565b60405180910390a250611422565b6040518535907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25050505050565b6009547d010000000000000000000000000000000000000000000000000000000000900460ff16158061177c57506009547d010000000000000000000000000000000000000000000000000000000000900460ff1681105b156117845750565b6009546001906117b8907d010000000000000000000000000000000000000000000000000000000000900460ff168361425c565b11611905577f00000000000000000000000000000000000000000000000000000000000000006009546040517fa8d87a3b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff919091169063a8d87a3b90602401602060405180830381865afa158015611858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187c9190614297565b73ffffffffffffffffffffffffffffffffffffffff1663eff7cc486040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b50506040517f302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c925060009150a15b50565b611910612630565b600980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84169081029190911790915560408051602081019290925201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815260095467ffffffffffffffff16600090815260026020522060010190610bf490826142b4565b6119ca612630565b6009805467ffffffffffffffff84167fffffffff0000000000000000000000000000000000000000000000000000000090911681176801000000000000000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179092556000908152600260209081526040918290208251918201939093526001926003019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611a8591613c7c565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff8416600090815260026020522060010190610c2190826142b4565b333014611b6e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b7e604082016020830161355a565b611b8b6040830183613c17565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff861681526002602052604090819020905160039091019350611be99250849150613c7c565b9081526040519081900360200190205460ff16611c3457806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610e7c9190613547565b611c44604084016020850161355a565b67ffffffffffffffff81166000908152600260205260409020600181018054611c6c90613b57565b15905080611c7b5750805460ff165b15611cbe576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610e7c565b6000611ccd6060870187613c17565b810190611cda9190613361565b6009549091507c0100000000000000000000000000000000000000000000000000000000900460ff16611d1a57611d1a611d158260016143ce565b6129b5565b505050505050565b611d2a612630565b67ffffffffffffffff8516600090815260026020526040902060018101611d52858783613ee6565b508115611d6a5760028101611d68838583613ee6565b505b805460ff1615611d1a5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050505050565b611da9612630565b6001611db6600483612bfd565b14611df0576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610e7c565b611dfb816000610e8c565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611e4390613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6f90613b57565b8015611ebc5780601f10611e9157610100808354040283529160200191611ebc565b820191906000526020600020905b815481529060010190602001808311611e9f57829003601f168201915b50505050508152602001600382018054611ed590613b57565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0190613b57565b8015611f4e5780601f10611f2357610100808354040283529160200191611f4e565b820191906000526020600020905b815481529060010190602001808311611f3157829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611fd15760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611f7c565b5050505081525050905060405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff831660009081526002602052604081206001810180548692919061203690613b57565b159050806120455750805460ff165b15612088576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610e7c565b6040805160a08101825267ffffffffffffffff88166000908152600260205291822060010180548291906120bb90613b57565b80601f01602080910402602001604051908101604052809291908181526020018280546120e790613b57565b80156121345780601f1061210957610100808354040283529160200191612134565b820191906000526020600020905b81548152906001019060200180831161211757829003601f168201915b5050509183525050602080820188905260408083018a905260075473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b1660009081526002928390522001805460809092019161219390613b57565b80601f01602080910402602001604051908101604052809291908181526020018280546121bf90613b57565b801561220c5780601f106121e15761010080835404028352916020019161220c565b820191906000526020600020905b8154815290600101906020018083116121ef57829003601f168201915b5050505050815250905060005b865181101561236d57612289333089848151811061223957612239613baa565b6020026020010151602001518a858151811061225757612257613baa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612dd5909392919063ffffffff16565b600754875173ffffffffffffffffffffffffffffffffffffffff909116908890839081106122b9576122b9613baa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614612365576123657f000000000000000000000000000000000000000000000000000000000000000088838151811061231657612316613baa565b60200260200101516020015189848151811061233457612334613baa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166128b19092919063ffffffff16565b600101612219565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded906123e5908b9086906004016143e1565b602060405180830381865afa158015612402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242691906144a4565b60075490915073ffffffffffffffffffffffffffffffffffffffff161561246c5760075461246c9073ffffffffffffffffffffffffffffffffffffffff16333084612dd5565b60075473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f99116156124bb5760006124bd565b825b8a856040518463ffffffff1660e01b81526004016124dc9291906143e1565b60206040518083038185885af11580156124fa573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061251f91906144a4565b60008181526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b612596612630565b600980547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000060ff8416908102919091179091556040519081527f4768dbf8645b24c54f2887651545d24f748c0d0d1d4c689eb810fb19f0befcf39060200160405180910390a150565b612627612630565b61190581612e33565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610e7c565b80158061275157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561272b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274f91906144a4565b155b6127dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610e7c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c219084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612f28565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612928573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294c91906144a4565b61295691906143ce565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506129af9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161282f565b50505050565b806001166001036129f8576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a1612a2c565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b612a3581611724565b6040805160a0810190915260095468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1660c08201526000908060e08101604051602081830303815290604052815260200183604051602001612a9991815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905281526020016000604051908082528060200260200182016040528015612b1357816020015b6040805180820190915260008082526020820152815260200190600190039081612aec5790505b50815260075473ffffffffffffffffffffffffffffffffffffffff908116602080840191909152604080519182018152600082529283015260095491517f96f4e9f90000000000000000000000000000000000000000000000000000000081529293507f000000000000000000000000000000000000000000000000000000000000000016916396f4e9f991612bba9167ffffffffffffffff9091169085906004016143e1565b6020604051808303816000875af1158015612bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906144a4565b6000612c098383613034565b9392505050565b80471015612c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e7c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612cd4576040519150601f19603f3d011682016040523d82523d6000602084013e612cd9565b606091505b5050905080610c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610e7c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c219084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161282f565b6000612dcd8484846130be565b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526129af9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161282f565b3373ffffffffffffffffffffffffffffffffffffffff821603612eb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610e7c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612f8a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130db9092919063ffffffff16565b805190915015610c215780806020019051810190612fa891906144bd565b610c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e7c565b600081815260028301602052604081205480151580613058575061305884846130ea565b612c09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610e7c565b60008281526002840160205260408120829055612dcd84846130f6565b6060612dcd8484600085613102565b6000612c09838361321b565b6000612c098383613233565b606082471015613194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e7c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516131bd9190613c7c565b60006040518083038185875af1925050503d80600081146131fa576040519150601f19603f3d011682016040523d82523d6000602084013e6131ff565b606091505b509150915061321087838387613282565b979650505050505050565b60008181526001830160205260408120541515612c09565b600081815260018301602052604081205461327a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610bdc565b506000610bdc565b606083156133185782516000036133115773ffffffffffffffffffffffffffffffffffffffff85163b613311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e7c565b5081612dcd565b612dcd838381511561332d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c9190613547565b60006020828403121561337357600080fd5b5035919050565b60208101600383106133b5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff8116811461190557600080fd5b60008083601f8401126133e357600080fd5b50813567ffffffffffffffff8111156133fb57600080fd5b60208301915083602082850101111561341357600080fd5b9250929050565b60008060006040848603121561342f57600080fd5b833561343a816133bb565b9250602084013567ffffffffffffffff81111561345657600080fd5b613462868287016133d1565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461190557600080fd5b6000602082840312156134a357600080fd5b8135612c098161346f565b801515811461190557600080fd5b6000602082840312156134ce57600080fd5b8135612c09816134ae565b60005b838110156134f45781810151838201526020016134dc565b50506000910152565b600081518084526135158160208601602086016134d9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612c0960208301846134fd565b60006020828403121561356c57600080fd5b8135612c09816133bb565b831515815260606020820152600061359260608301856134fd565b82810360408401526135a481856134fd565b9695505050505050565b600080604083850312156135c157600080fd5b82356135cc8161346f565b946020939093013593505050565b6000806000606084860312156135ef57600080fd5b83356135fa8161346f565b9250602084013561360a8161346f565b929592945050506040919091013590565b60008151808452602080850194506020840160005b8381101561366d578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613630565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a060608401526136b260c08401826134fd565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526136ee83836134fd565b925060808601519150808584030160a08601525061370c828261361b565b95945050505050565b6000806040838503121561372857600080fd5b82359150602083013561373a8161346f565b809150509250929050565b60008083601f84011261375757600080fd5b50813567ffffffffffffffff81111561376f57600080fd5b6020830191508360208260051b850101111561341357600080fd5b600080600080604085870312156137a057600080fd5b843567ffffffffffffffff808211156137b857600080fd5b6137c488838901613745565b909650945060208701359150808211156137dd57600080fd5b506137ea87828801613745565b95989497509550505050565b60006020828403121561380857600080fd5b813567ffffffffffffffff81111561381f57600080fd5b820160a08185031215612c0957600080fd5b6000806040838503121561384457600080fd5b823561384f816133bb565b9150602083013561373a8161346f565b60008060008060006060868803121561387757600080fd5b8535613882816133bb565b9450602086013567ffffffffffffffff8082111561389f57600080fd5b6138ab89838a016133d1565b909650945060408801359150808211156138c457600080fd5b506138d1888289016133d1565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613934576139346138e2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613981576139816138e2565b604052919050565b600082601f83011261399a57600080fd5b813567ffffffffffffffff8111156139b4576139b46138e2565b6139e560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161393a565b8181528460208386010111156139fa57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613a2c57600080fd5b8335613a37816133bb565b925060208481013567ffffffffffffffff80821115613a5557600080fd5b818701915087601f830112613a6957600080fd5b813581811115613a7b57613a7b6138e2565b613a89848260051b0161393a565b81815260069190911b8301840190848101908a831115613aa857600080fd5b938501935b82851015613af4576040858c031215613ac65760008081fd5b613ace613911565b8535613ad98161346f565b81528587013587820152825260409094019390850190613aad565b965050506040870135925080831115613b0c57600080fd5b5050613b1a86828701613989565b9150509250925092565b600060208284031215613b3657600080fd5b813560ff81168114612c0957600080fd5b8183823760009101908152919050565b600181811c90821680613b6b57607f821691505b602082108103613ba4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c0d57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c4c57600080fd5b83018035915067ffffffffffffffff821115613c6757600080fd5b60200191503681900382131561341357600080fd5b60008251613c0d8184602087016134d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cc357600080fd5b830160208101925035905067ffffffffffffffff811115613ce357600080fd5b80360382131561341357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b8581101561366d578135613d5e8161346f565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613d4b565b602081528135602082015260006020830135613dab816133bb565b67ffffffffffffffff8082166040850152613dc96040860186613c8e565b925060a06060860152613de060c086018483613cf2565b925050613df06060860186613c8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613e26858385613cf2565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018312613e5f57600080fd5b60209288019283019235915083821115613e7857600080fd5b8160061b3603831315613e8a57600080fd5b8685030160a0870152613210848284613d3b565b601f821115610c21576000816000526020600020601f850160051c81016020861015613ec75750805b601f850160051c820191505b81811015611d1a57828155600101613ed3565b67ffffffffffffffff831115613efe57613efe6138e2565b613f1283613f0c8354613b57565b83613e9e565b6000601f841160018114613f645760008515613f2e5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611422565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613fb35786850135825560209485019460019092019101613f93565b5086821015613fee577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561403a8161346f565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156140a0576140a06138e2565b80548382558084101561412d5760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831683146140e1576140e1614000565b80861686146140f2576140f2614000565b5060008360005260206000208360011b81018760011b820191505b8082101561412857828255828483015560028201915061410d565b505050505b5060008181526020812083915b85811015611d1a5761414c838361402f565b604092909201916002919091019060010161413a565b81358155600181016020830135614178816133bb565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008454161783556141b86040860186613c17565b935091506141ca838360028701613ee6565b6141d76060860186613c17565b935091506141e9838360038701613ee6565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261422057600080fd5b91840191823591508082111561423557600080fd5b506020820191508060061b360382131561424e57600080fd5b6129af818360048601614087565b600082614292577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000602082840312156142a957600080fd5b8151612c098161346f565b815167ffffffffffffffff8111156142ce576142ce6138e2565b6142e2816142dc8454613b57565b84613e9e565b602080601f83116001811461433557600084156142ff5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611d1a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561438257888601518255948401946001909101908401614363565b50858210156143be57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610bdc57610bdc614000565b67ffffffffffffffff83168152604060208201526000825160a0604084015261440d60e08401826134fd565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08085840301606086015261444983836134fd565b92506040860151915080858403016080860152614466838361361b565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506135a482826134fd565b6000602082840312156144b657600080fd5b5051919050565b6000602082840312156144cf57600080fd5b8151612c09816134ae56fea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"roundTripsBeforeFunding\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"CannotAcknowledgeUnsentMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAckMessageHeader\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"}],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"name\":\"InvalidRouter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAlreadyAcknowledged\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageNotFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"countIncrBeforeFunding\",\"type\":\"uint8\"}],\"name\":\"CountIncrBeforeFundingSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newToken\",\"type\":\"address\"}],\"name\":\"FeeTokenModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Funded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenReceiver\",\"type\":\"address\"}],\"name\":\"MessageAbandoned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"MessageAckReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageAckSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"MessageFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"incomingMessageId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ACKMessageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MessageSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Ping\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"Pong\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACK_MESSAGE_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"abandonFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ccipReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ccipSend\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"disableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraArgsBytes\",\"type\":\"bytes\"}],\"name\":\"enableChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pingPongCount\",\"type\":\"uint256\"}],\"name\":\"fundPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCountIncrBeforeFunding\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounterpartChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageContents\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"senderAddr\",\"type\":\"bytes\"}],\"name\":\"isApprovedSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"modifyFeeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"destTokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structClient.Any2EVMMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"retryFailedMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"s_chainConfigs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"disabled\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgsBytes\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_feeToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"s_messageStatus\",\"outputs\":[{\"internalType\":\"enumCCIPReceiverWithACK.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"countIncrBeforeFunding\",\"type\":\"uint8\"}],\"name\":\"setCountIncrBeforeFunding\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpart\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"counterpartAddress\",\"type\":\"address\"}],\"name\":\"setCounterpartAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"counterpartChainSelector\",\"type\":\"uint64\"}],\"name\":\"setCounterpartChainSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startPingPong\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"adds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"sender\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPClientBase.ApprovedSenderUpdate[]\",\"name\":\"removes\",\"type\":\"tuple[]\"}],\"name\":\"updateApprovedSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60a06040523480156200001157600080fd5b5060405162004c4438038062004c44833981016040819052620000349162000591565b82828181818181803380600081620000935760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c657620000c6816200016d565b5050506001600160a01b038116620000f1576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b03908116608052600780546001600160a01b03191691841691821790551590506200013557620001356001600160a01b0382168360001962000218565b5050505050508060026200014a919062000600565b6009601d6101000a81548160ff021916908360ff16021790555050505062000700565b336001600160a01b03821603620001c75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200008a565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000626565b6200029c919062000640565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152919250620002f891869190620002fe16565b50505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200034d906001600160a01b038516908490620003d4565b805190915015620003cf57808060200190518101906200036e91906200065c565b620003cf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200008a565b505050565b6060620003e58484600085620003ed565b949350505050565b606082471015620004505760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200008a565b600080866001600160a01b031685876040516200046e9190620006ad565b60006040518083038185875af1925050503d8060008114620004ad576040519150601f19603f3d011682016040523d82523d6000602084013e620004b2565b606091505b509092509050620004c687838387620004d1565b979650505050505050565b60608315620005455782516000036200053d576001600160a01b0385163b6200053d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200008a565b5081620003e5565b620003e583838151156200055c5781518083602001fd5b8060405162461bcd60e51b81526004016200008a9190620006cb565b6001600160a01b03811681146200058e57600080fd5b50565b600080600060608486031215620005a757600080fd5b8351620005b48162000578565b6020850151909350620005c78162000578565b604085015190925060ff81168114620005df57600080fd5b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821602908116908181146200061f576200061f620005ea565b5092915050565b6000602082840312156200063957600080fd5b5051919050565b80820180821115620006565762000656620005ea565b92915050565b6000602082840312156200066f57600080fd5b815180151581146200068057600080fd5b9392505050565b60005b83811015620006a45781810151838201526020016200068a565b50506000910152565b60008251620006c181846020870162000687565b9190910192915050565b6020815260008251806020840152620006ec81604085016020870162000687565b601f01601f19169190910160400192915050565b6080516144f062000754600039600081816105e601528181610827015281816108b701528181611441015281816117bf015281816122e6015281816123af015281816124870152612b7901526144f06000f3fe60806040526004361061021d5760003560e01c80638462a2b91161011d578063bee518a4116100b0578063e6c725f51161007f578063ef686d8e11610064578063ef686d8e14610744578063f2fde38b14610764578063ff2deec31461078457600080fd5b8063e6c725f5146106eb578063e89b44851461073157600080fd5b8063bee518a414610662578063cf6730f81461068b578063d8469e40146106ab578063e4ca8754146106cb57600080fd5b80639d2aede5116100ec5780639d2aede5146105b7578063b0f479a1146105d7578063b187bd261461060a578063b5a110111461064257600080fd5b80638462a2b91461052c57806385572ffb1461054c5780638da5cb5b1461056c5780638f491cba1461059757600080fd5b806335f170ef116101b05780635e35359e1161017f5780636d62d633116101645780636d62d633146104ae5780636fef519e146104ce57806379ba50971461051757600080fd5b80635e35359e146104615780636939cd971461048157600080fd5b806335f170ef146103c457806341eade46146103f35780635075a9d414610413578063536c6bfa1461044157600080fd5b8063181f5a77116101ec578063181f5a77146102e15780631892b906146103375780632874d8bf146103575780632b6e5d631461036c57600080fd5b806305bfe982146102295780630e958d6b1461026f57806311e85dff1461029f57806316c38b3c146102c157600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061025961024436600461336a565b60086020526000908152604090205460ff1681565b6040516102669190613383565b60405180910390f35b34801561027b57600080fd5b5061028f61028a366004613423565b6107b1565b6040519015158152602001610266565b3480156102ab57600080fd5b506102bf6102ba36600461349a565b6107fc565b005b3480156102cd57600080fd5b506102bf6102dc3660046134c5565b610974565b3480156102ed57600080fd5b5061032a6040518060400160405280601881526020017f53656c6646756e64656450696e67506f6e6720312e322e30000000000000000081525081565b6040516102669190613550565b34801561034357600080fd5b506102bf610352366004613563565b6109ce565b34801561036357600080fd5b506102bf610a11565b34801561037857600080fd5b5060095468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610266565b3480156103d057600080fd5b506103e46103df366004613563565b610a4d565b60405161026693929190613580565b3480156103ff57600080fd5b506102bf61040e366004613563565b610b84565b34801561041f57600080fd5b5061043361042e36600461336a565b610bcf565b604051908152602001610266565b34801561044d57600080fd5b506102bf61045c3660046135b7565b610be2565b34801561046d57600080fd5b506102bf61047c3660046135e3565b610bf8565b34801561048d57600080fd5b506104a161049c36600461336a565b610c26565b6040516102669190613681565b3480156104ba57600080fd5b506102bf6104c936600461371e565b610e31565b3480156104da57600080fd5b5061032a6040518060400160405280601581526020017f4d4553534147455f41434b4e4f574c45444745445f000000000000000000000081525081565b34801561052357600080fd5b506102bf61114b565b34801561053857600080fd5b506102bf610547366004613793565b611248565b34801561055857600080fd5b506102bf6105673660046137ff565b611429565b34801561057857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661039f565b3480156105a357600080fd5b506102bf6105b236600461336a565b611724565b3480156105c357600080fd5b506102bf6105d236600461349a565b611908565b3480156105e357600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061039f565b34801561061657600080fd5b506009547c0100000000000000000000000000000000000000000000000000000000900460ff1661028f565b34801561064e57600080fd5b506102bf61065d36600461383a565b6119c2565b34801561066e57600080fd5b5060095460405167ffffffffffffffff9091168152602001610266565b34801561069757600080fd5b506102bf6106a63660046137ff565b611b35565b3480156106b757600080fd5b506102bf6106c6366004613868565b611d22565b3480156106d757600080fd5b506102bf6106e636600461336a565b611da1565b3480156106f757600080fd5b506009547d010000000000000000000000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610266565b61043361073f366004613a20565b61200b565b34801561075057600080fd5b506102bf61075f366004613b2d565b61258f565b34801561077057600080fd5b506102bf61077f36600461349a565b612620565b34801561079057600080fd5b5060075461039f9073ffffffffffffffffffffffffffffffffffffffff1681565b67ffffffffffffffff831660009081526002602052604080822090516003909101906107e09085908590613b50565b9081526040519081900360200190205460ff1690509392505050565b610804612631565b60075473ffffffffffffffffffffffffffffffffffffffff1615610867576108677f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff169060006126b2565b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355169015610916576109167f000000000000000000000000000000000000000000000000000000000000000060075473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128b2565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4a1cb6b940121ea2ba30fb9b494035cbfe2d4b6b080db8b502150410bef7eb4e60405160405180910390a35050565b61097c612631565b600980549115157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6109d6612631565b600980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b610a19612631565b600980547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055610a4b60016129b6565b565b6002602052600090815260409020805460018201805460ff9092169291610a7390613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f90613b60565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505050505090806002018054610b0190613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613b60565b8015610b7a5780601f10610b4f57610100808354040283529160200191610b7a565b820191906000526020600020905b815481529060010190602001808311610b5d57829003601f168201915b5050505050905083565b610b8c612631565b67ffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000610bdc600483612bfe565b92915050565b610bea612631565b610bf48282612c11565b5050565b610c00612631565b610c2173ffffffffffffffffffffffffffffffffffffffff84168383612d6b565b505050565b6040805160a08082018352600080835260208084018290526060848601819052808501819052608085015285825260038152908490208451928301855280548352600181015467ffffffffffffffff1691830191909152600281018054939492939192840191610c9590613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc190613b60565b8015610d0e5780601f10610ce357610100808354040283529160200191610d0e565b820191906000526020600020905b815481529060010190602001808311610cf157829003601f168201915b50505050508152602001600382018054610d2790613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5390613b60565b8015610da05780601f10610d7557610100808354040283529160200191610da0565b820191906000526020600020905b815481529060010190602001808311610d8357829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610e235760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101610dce565b505050915250909392505050565b610e39612631565b6001610e46600484612bfe565b14610e85576040517fb6e78260000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610e958260025b60049190612dc1565b506000828152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191610edd90613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0990613b60565b8015610f565780601f10610f2b57610100808354040283529160200191610f56565b820191906000526020600020905b815481529060010190602001808311610f3957829003601f168201915b50505050508152602001600382018054610f6f90613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9b90613b60565b8015610fe85780601f10610fbd57610100808354040283529160200191610fe8565b820191906000526020600020905b815481529060010190602001808311610fcb57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561106b5760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611016565b5050505081525050905060005b8160800151518110156110fa576110f2838360800151838151811061109f5761109f613bb3565b602002602001015160200151846080015184815181106110c1576110c1613bb3565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612d6b9092919063ffffffff16565b600101611078565b5060405173ffffffffffffffffffffffffffffffffffffffff8316815283907fd5038100bd3dc9631d3c3f4f61a3e53e9d466f40c47af9897292c7b35e32a9579060200160405180910390a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610e7c565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611250612631565b60005b81811015611333576002600084848481811061127157611271613bb3565b90506020028101906112839190613be2565b611291906020810190613563565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018383838181106112c8576112c8613bb3565b90506020028101906112da9190613be2565b6112e8906020810190613c20565b6040516112f6929190613b50565b90815260405190819003602001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611253565b5060005b838110156114225760016002600087878581811061135757611357613bb3565b90506020028101906113699190613be2565b611377906020810190613563565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206003018686848181106113ae576113ae613bb3565b90506020028101906113c09190613be2565b6113ce906020810190613c20565b6040516113dc929190613b50565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055600101611337565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461149a576040517fd7f73334000000000000000000000000000000000000000000000000000000008152336004820152602401610e7c565b6114aa6040820160208301613563565b6114b76040830183613c20565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff8616815260026020526040908190209051600390910193506115159250849150613c85565b9081526040519081900360200190205460ff1661156057806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610e7c9190613550565b6115706040840160208501613563565b67ffffffffffffffff8116600090815260026020526040902060018101805461159890613b60565b159050806115a75750805460ff165b156115ea576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610e7c565b6040517fcf6730f8000000000000000000000000000000000000000000000000000000008152309063cf6730f890611626908890600401613d99565b600060405180830381600087803b15801561164057600080fd5b505af1925050508015611651575060015b6116f1573d80801561167f576040519150601f19603f3d011682016040523d82523d6000602084013e611684565b606091505b5061169186356001610e8c565b508535600090815260036020526040902086906116ae828261416b565b50506040518635907f55bc02a9ef6f146737edeeb425738006f67f077e7138de3bf84a15bde1a5b56f906116e3908490613550565b60405180910390a250611422565b6040518535907fdf6958669026659bac75ba986685e11a7d271284989f565f2802522663e9a70f90600090a25050505050565b6009547d010000000000000000000000000000000000000000000000000000000000900460ff16158061177c57506009547d010000000000000000000000000000000000000000000000000000000000900460ff1681105b156117845750565b6009546001906117b8907d010000000000000000000000000000000000000000000000000000000000900460ff1683614265565b11611905577f00000000000000000000000000000000000000000000000000000000000000006009546040517fa8d87a3b00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff919091169063a8d87a3b90602401602060405180830381865afa158015611858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187c91906142a0565b73ffffffffffffffffffffffffffffffffffffffff1663eff7cc486040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156118c357600080fd5b505af11580156118d7573d6000803e3d6000fd5b50506040517f302777af5d26fab9dd5120c5f1307c65193ebc51daf33244ada4365fab10602c925060009150a15b50565b611910612631565b600980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84169081029190911790915560408051602081019290925201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815260095467ffffffffffffffff16600090815260026020522060010190610bf490826142bd565b6119ca612631565b6009805467ffffffffffffffff84167fffffffff0000000000000000000000000000000000000000000000000000000090911681176801000000000000000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179092556000908152600260209081526040918290208251918201939093526001926003019101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611a8591613c85565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169415159490941790935573ffffffffffffffffffffffffffffffffffffffff84169183019190915201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815267ffffffffffffffff8416600090815260026020522060010190610c2190826142bd565b333014611b6e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b7e6040820160208301613563565b611b8b6040830183613c20565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525067ffffffffffffffff861681526002602052604090819020905160039091019350611be99250849150613c85565b9081526040519081900360200190205460ff16611c3457806040517f5075bb38000000000000000000000000000000000000000000000000000000008152600401610e7c9190613550565b611c446040840160208501613563565b67ffffffffffffffff81166000908152600260205260409020600181018054611c6c90613b60565b15905080611c7b5750805460ff165b15611cbe576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610e7c565b6000611ccd6060870187613c20565b810190611cda919061336a565b6009549091507c0100000000000000000000000000000000000000000000000000000000900460ff16611d1a57611d1a611d158260016143d7565b6129b6565b505050505050565b611d2a612631565b67ffffffffffffffff8516600090815260026020526040902060018101611d52858783613eef565b508115611d6a5760028101611d68838583613eef565b505b805460ff1615611d1a5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050505050565b6001611dae600483612bfe565b14611de8576040517fb6e7826000000000000000000000000000000000000000000000000000000000815260048101829052602401610e7c565b611df3816000610e8c565b506000818152600360209081526040808320815160a08101835281548152600182015467ffffffffffffffff16938101939093526002810180549192840191611e3b90613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6790613b60565b8015611eb45780601f10611e8957610100808354040283529160200191611eb4565b820191906000526020600020905b815481529060010190602001808311611e9757829003601f168201915b50505050508152602001600382018054611ecd90613b60565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef990613b60565b8015611f465780601f10611f1b57610100808354040283529160200191611f46565b820191906000526020600020905b815481529060010190602001808311611f2957829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611fc95760008481526020908190206040805180820190915260028502909101805473ffffffffffffffffffffffffffffffffffffffff168252600190810154828401529083529092019101611f74565b50505050815250509050611fdc81612dd6565b60405182907fef3bf8c64bc480286c4f3503b870ceb23e648d2d902e31fb7bb46680da6de8ad90600090a25050565b67ffffffffffffffff831660009081526002602052604081206001810180548692919061203790613b60565b159050806120465750805460ff165b15612089576040517fd79f2ea400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610e7c565b6040805160a08101825267ffffffffffffffff88166000908152600260205291822060010180548291906120bc90613b60565b80601f01602080910402602001604051908101604052809291908181526020018280546120e890613b60565b80156121355780601f1061210a57610100808354040283529160200191612135565b820191906000526020600020905b81548152906001019060200180831161211857829003601f168201915b5050509183525050602080820188905260408083018a905260075473ffffffffffffffffffffffffffffffffffffffff16606084015267ffffffffffffffff8b1660009081526002928390522001805460809092019161219490613b60565b80601f01602080910402602001604051908101604052809291908181526020018280546121c090613b60565b801561220d5780601f106121e25761010080835404028352916020019161220d565b820191906000526020600020905b8154815290600101906020018083116121f057829003601f168201915b5050505050815250905060005b865181101561236e5761228a333089848151811061223a5761223a613bb3565b6020026020010151602001518a858151811061225857612258613bb3565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16612dde909392919063ffffffff16565b600754875173ffffffffffffffffffffffffffffffffffffffff909116908890839081106122ba576122ba613bb3565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614612366576123667f000000000000000000000000000000000000000000000000000000000000000088838151811061231757612317613bb3565b60200260200101516020015189848151811061233557612335613bb3565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff166128b29092919063ffffffff16565b60010161221a565b506040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded906123e6908b9086906004016143ea565b602060405180830381865afa158015612403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242791906144ad565b60075490915073ffffffffffffffffffffffffffffffffffffffff161561246d5760075461246d9073ffffffffffffffffffffffffffffffffffffffff16333084612dde565b60075473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116916396f4e9f99116156124bc5760006124be565b825b8a856040518463ffffffff1660e01b81526004016124dd9291906143ea565b60206040518083038185885af11580156124fb573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061252091906144ad565b60008181526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519196509086907f9102b9031c3c59d8320bf14d84d7d7a3434366b91032fad1c87579cfc62b2372908390a3505050509392505050565b612597612631565b600980547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000060ff8416908102919091179091556040519081527f4768dbf8645b24c54f2887651545d24f748c0d0d1d4c689eb810fb19f0befcf39060200160405180910390a150565b612628612631565b61190581612e3c565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610e7c565b80158061275257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561272c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275091906144ad565b155b6127de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610e7c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c219084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612f31565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612929573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294d91906144ad565b61295791906143d7565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506129b09085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612830565b50505050565b806001166001036129f9576040518181527f48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f9060200160405180910390a1612a2d565b6040518181527f58b69f57828e6962d216502094c54f6562f3bf082ba758966c3454f9e37b15259060200160405180910390a15b612a3681611724565b6040805160a0810190915260095468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1660c08201526000908060e08101604051602081830303815290604052815260200183604051602001612a9a91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905281526020016000604051908082528060200260200182016040528015612b1457816020015b6040805180820190915260008082526020820152815260200190600190039081612aed5790505b50815260075473ffffffffffffffffffffffffffffffffffffffff908116602080840191909152604080519182018152600082529283015260095491517f96f4e9f90000000000000000000000000000000000000000000000000000000081529293507f000000000000000000000000000000000000000000000000000000000000000016916396f4e9f991612bbb9167ffffffffffffffff9091169085906004016143ea565b6020604051808303816000875af1158015612bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906144ad565b6000612c0a838361303d565b9392505050565b80471015612c7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e7c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612cd5576040519150601f19603f3d011682016040523d82523d6000602084013e612cda565b606091505b5050905080610c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610e7c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c219084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612830565b6000612dce8484846130c7565b949350505050565b611905612631565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526129b09085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612830565b3373ffffffffffffffffffffffffffffffffffffffff821603612ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610e7c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612f93826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130e49092919063ffffffff16565b805190915015610c215780806020019051810190612fb191906144c6565b610c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e7c565b600081815260028301602052604081205480151580613061575061306184846130f3565b612c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610e7c565b60008281526002840160205260408120829055612dce84846130ff565b6060612dce848460008561310b565b6000612c0a8383613224565b6000612c0a838361323c565b60608247101561319d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e7c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516131c69190613c85565b60006040518083038185875af1925050503d8060008114613203576040519150601f19603f3d011682016040523d82523d6000602084013e613208565b606091505b50915091506132198783838761328b565b979650505050505050565b60008181526001830160205260408120541515612c0a565b600081815260018301602052604081205461328357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610bdc565b506000610bdc565b6060831561332157825160000361331a5773ffffffffffffffffffffffffffffffffffffffff85163b61331a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e7c565b5081612dce565b612dce83838151156133365781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c9190613550565b60006020828403121561337c57600080fd5b5035919050565b60208101600383106133be577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b67ffffffffffffffff8116811461190557600080fd5b60008083601f8401126133ec57600080fd5b50813567ffffffffffffffff81111561340457600080fd5b60208301915083602082850101111561341c57600080fd5b9250929050565b60008060006040848603121561343857600080fd5b8335613443816133c4565b9250602084013567ffffffffffffffff81111561345f57600080fd5b61346b868287016133da565b9497909650939450505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461190557600080fd5b6000602082840312156134ac57600080fd5b8135612c0a81613478565b801515811461190557600080fd5b6000602082840312156134d757600080fd5b8135612c0a816134b7565b60005b838110156134fd5781810151838201526020016134e5565b50506000910152565b6000815180845261351e8160208601602086016134e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612c0a6020830184613506565b60006020828403121561357557600080fd5b8135612c0a816133c4565b831515815260606020820152600061359b6060830185613506565b82810360408401526135ad8185613506565b9695505050505050565b600080604083850312156135ca57600080fd5b82356135d581613478565b946020939093013593505050565b6000806000606084860312156135f857600080fd5b833561360381613478565b9250602084013561361381613478565b929592945050506040919091013590565b60008151808452602080850194506020840160005b83811015613676578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101613639565b509495945050505050565b602081528151602082015267ffffffffffffffff60208301511660408201526000604083015160a060608401526136bb60c0840182613506565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160808601526136f78383613506565b925060808601519150808584030160a0860152506137158282613624565b95945050505050565b6000806040838503121561373157600080fd5b82359150602083013561374381613478565b809150509250929050565b60008083601f84011261376057600080fd5b50813567ffffffffffffffff81111561377857600080fd5b6020830191508360208260051b850101111561341c57600080fd5b600080600080604085870312156137a957600080fd5b843567ffffffffffffffff808211156137c157600080fd5b6137cd8883890161374e565b909650945060208701359150808211156137e657600080fd5b506137f38782880161374e565b95989497509550505050565b60006020828403121561381157600080fd5b813567ffffffffffffffff81111561382857600080fd5b820160a08185031215612c0a57600080fd5b6000806040838503121561384d57600080fd5b8235613858816133c4565b9150602083013561374381613478565b60008060008060006060868803121561388057600080fd5b853561388b816133c4565b9450602086013567ffffffffffffffff808211156138a857600080fd5b6138b489838a016133da565b909650945060408801359150808211156138cd57600080fd5b506138da888289016133da565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561393d5761393d6138eb565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561398a5761398a6138eb565b604052919050565b600082601f8301126139a357600080fd5b813567ffffffffffffffff8111156139bd576139bd6138eb565b6139ee60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613943565b818152846020838601011115613a0357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613a3557600080fd5b8335613a40816133c4565b925060208481013567ffffffffffffffff80821115613a5e57600080fd5b818701915087601f830112613a7257600080fd5b813581811115613a8457613a846138eb565b613a92848260051b01613943565b81815260069190911b8301840190848101908a831115613ab157600080fd5b938501935b82851015613afd576040858c031215613acf5760008081fd5b613ad761391a565b8535613ae281613478565b81528587013587820152825260409094019390850190613ab6565b965050506040870135925080831115613b1557600080fd5b5050613b2386828701613992565b9150509250925092565b600060208284031215613b3f57600080fd5b813560ff81168114612c0a57600080fd5b8183823760009101908152919050565b600181811c90821680613b7457607f821691505b602082108103613bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c1657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c5557600080fd5b83018035915067ffffffffffffffff821115613c7057600080fd5b60200191503681900382131561341c57600080fd5b60008251613c168184602087016134e2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ccc57600080fd5b830160208101925035905067ffffffffffffffff811115613cec57600080fd5b80360382131561341c57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8183526000602080850194508260005b85811015613676578135613d6781613478565b73ffffffffffffffffffffffffffffffffffffffff168752818301358388015260409687019690910190600101613d54565b602081528135602082015260006020830135613db4816133c4565b67ffffffffffffffff8082166040850152613dd26040860186613c97565b925060a06060860152613de960c086018483613cfb565b925050613df96060860186613c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080878603016080880152613e2f858385613cfb565b9450608088013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018312613e6857600080fd5b60209288019283019235915083821115613e8157600080fd5b8160061b3603831315613e9357600080fd5b8685030160a0870152613219848284613d44565b601f821115610c21576000816000526020600020601f850160051c81016020861015613ed05750805b601f850160051c820191505b81811015611d1a57828155600101613edc565b67ffffffffffffffff831115613f0757613f076138eb565b613f1b83613f158354613b60565b83613ea7565b6000601f841160018114613f6d5760008515613f375750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611422565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015613fbc5786850135825560209485019460019092019101613f9c565b5086821015613ff7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b813561404381613478565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b680100000000000000008311156140a9576140a96138eb565b8054838255808410156141365760017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831683146140ea576140ea614009565b80861686146140fb576140fb614009565b5060008360005260206000208360011b81018760011b820191505b80821015614131578282558284830155600282019150614116565b505050505b5060008181526020812083915b85811015611d1a576141558383614038565b6040929092019160029190910190600101614143565b81358155600181016020830135614181816133c4565b67ffffffffffffffff8082167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008454161783556141c16040860186613c20565b935091506141d3838360028701613eef565b6141e06060860186613c20565b935091506141f2838360038701613eef565b608085013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301831261422957600080fd5b91840191823591508082111561423e57600080fd5b506020820191508060061b360382131561425757600080fd5b6129b0818360048601614090565b60008261429b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000602082840312156142b257600080fd5b8151612c0a81613478565b815167ffffffffffffffff8111156142d7576142d76138eb565b6142eb816142e58454613b60565b84613ea7565b602080601f83116001811461433e57600084156143085750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611d1a565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561438b5788860151825594840194600190910190840161436c565b50858210156143c757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610bdc57610bdc614009565b67ffffffffffffffff83168152604060208201526000825160a0604084015261441660e0840182613506565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160608601526144528383613506565b9250604086015191508085840301608086015261446f8383613624565b925073ffffffffffffffffffffffffffffffffffffffff60608701511660a086015260808601519150808584030160c0860152506135ad8282613506565b6000602082840312156144bf57600080fd5b5051919050565b6000602082840312156144d857600080fd5b8151612c0a816134b756fea164736f6c6343000818000a", } var SelfFundedPingPongABI = SelfFundedPingPongMetaData.ABI @@ -409,11 +409,11 @@ func (_SelfFundedPingPong *SelfFundedPingPongCallerSession) Owner() (common.Addr return _SelfFundedPingPong.Contract.Owner(&_SelfFundedPingPong.CallOpts) } -func (_SelfFundedPingPong *SelfFundedPingPongCaller) SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, +func (_SelfFundedPingPong *SelfFundedPingPongCaller) SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) { var out []interface{} - err := _SelfFundedPingPong.contract.Call(opts, &out, "s_chainConfigs", arg0) + err := _SelfFundedPingPong.contract.Call(opts, &out, "s_chainConfigs", destChainSelector) outstruct := new(SChainConfigs) if err != nil { @@ -428,16 +428,16 @@ func (_SelfFundedPingPong *SelfFundedPingPongCaller) SChainConfigs(opts *bind.Ca } -func (_SelfFundedPingPong *SelfFundedPingPongSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_SelfFundedPingPong *SelfFundedPingPongSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _SelfFundedPingPong.Contract.SChainConfigs(&_SelfFundedPingPong.CallOpts, arg0) + return _SelfFundedPingPong.Contract.SChainConfigs(&_SelfFundedPingPong.CallOpts, destChainSelector) } -func (_SelfFundedPingPong *SelfFundedPingPongCallerSession) SChainConfigs(arg0 uint64) (SChainConfigs, +func (_SelfFundedPingPong *SelfFundedPingPongCallerSession) SChainConfigs(destChainSelector uint64) (SChainConfigs, error) { - return _SelfFundedPingPong.Contract.SChainConfigs(&_SelfFundedPingPong.CallOpts, arg0) + return _SelfFundedPingPong.Contract.SChainConfigs(&_SelfFundedPingPong.CallOpts, destChainSelector) } func (_SelfFundedPingPong *SelfFundedPingPongCaller) SFeeToken(opts *bind.CallOpts) (common.Address, error) { @@ -2636,7 +2636,7 @@ type SelfFundedPingPongInterface interface { Owner(opts *bind.CallOpts) (common.Address, error) - SChainConfigs(opts *bind.CallOpts, arg0 uint64) (SChainConfigs, + SChainConfigs(opts *bind.CallOpts, destChainSelector uint64) (SChainConfigs, error) diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 4f53971262..ee211921f8 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -5,10 +5,10 @@ burn_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnFromMintTokenPool burn_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnMintTokenPool/BurnMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnMintTokenPool/BurnMintTokenPool.bin fee3f82935ce7a26c65e12f19a472a4fccdae62755abdb42d8b0a01f0f06981a burn_mint_token_pool_and_proxy: ../../../contracts/solc/v0.8.24/BurnMintTokenPoolAndProxy/BurnMintTokenPoolAndProxy.abi ../../../contracts/solc/v0.8.24/BurnMintTokenPoolAndProxy/BurnMintTokenPoolAndProxy.bin c7efa00d2be62a97a814730c8e13aa70794ebfdd38a9f3b3c11554a5dfd70478 burn_with_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.bin a0728e186af74968101135a58a483320ced9ab79b22b1b24ac6994254ee79097 -ccipClient: ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.abi ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.bin 7a02b5e5da9f1ec593e6916d45a2972330dfe8d4a40eeb3d76fd57b852a7d230 -ccipReceiver: ../../../contracts/solc/v0.8.24/CCIPReceiver/CCIPReceiver.abi ../../../contracts/solc/v0.8.24/CCIPReceiver/CCIPReceiver.bin 4ff0f5166791975a28c8cca820d5b23636877a39db90090aa18ad7d2d122b785 -ccipReceiverWithACK: ../../../contracts/solc/v0.8.24/CCIPReceiverWithACK/CCIPReceiverWithACK.abi ../../../contracts/solc/v0.8.24/CCIPReceiverWithACK/CCIPReceiverWithACK.bin 8f0cb5cff5611460db2527342ac74723ffc2c57afb3866eefe862b0dad2e75bc -ccipSender: ../../../contracts/solc/v0.8.24/CCIPSender/CCIPSender.abi ../../../contracts/solc/v0.8.24/CCIPSender/CCIPSender.bin f79420dab435b1c44d695cc1cfb1771e4ba1a7224814198b4818c043219e337a +ccipClient: ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.abi ../../../contracts/solc/v0.8.24/CCIPClient/CCIPClient.bin 7f7045fe8bd0d0a5bfb69a74cb782c1def4e40c6690f78f3686abf8702411cca +ccipReceiver: ../../../contracts/solc/v0.8.24/CCIPReceiver/CCIPReceiver.abi ../../../contracts/solc/v0.8.24/CCIPReceiver/CCIPReceiver.bin 0aa9dc4d97b89bbd3fb273d1386b8bd46b2d8c5fa2a4e26cc0ab0589b20c7269 +ccipReceiverWithACK: ../../../contracts/solc/v0.8.24/CCIPReceiverWithACK/CCIPReceiverWithACK.abi ../../../contracts/solc/v0.8.24/CCIPReceiverWithACK/CCIPReceiverWithACK.bin 02a339415eb7dc90e167a7122beeed340b4171930b28646df16432e692f05b6d +ccipSender: ../../../contracts/solc/v0.8.24/CCIPSender/CCIPSender.abi ../../../contracts/solc/v0.8.24/CCIPSender/CCIPSender.bin 96fade4180f686c927f7a599ba18a29efd05df117e1d31b57427b16cfcda370f ccip_config: ../../../contracts/solc/v0.8.24/CCIPConfig/CCIPConfig.abi ../../../contracts/solc/v0.8.24/CCIPConfig/CCIPConfig.bin c44460757ca0e1b228734b32b9ab03221b93d77bb9f8e2970830779a8be2cb78 commit_store: ../../../contracts/solc/v0.8.24/CommitStore/CommitStore.abi ../../../contracts/solc/v0.8.24/CommitStore/CommitStore.bin ddc26c10c2a52b59624faae9005827b09b98db4566887a736005e8cc37cf8a51 commit_store_helper: ../../../contracts/solc/v0.8.24/CommitStoreHelper/CommitStoreHelper.abi ../../../contracts/solc/v0.8.24/CommitStoreHelper/CommitStoreHelper.bin ebd8aac686fa28a71d4212bcd25a28f8f640d50dce5e50498b2f6b8534890b69 @@ -28,11 +28,11 @@ mock_v3_aggregator_contract: ../../../contracts/solc/v0.8.24/MockV3Aggregator/Mo multi_aggregate_rate_limiter: ../../../contracts/solc/v0.8.24/MultiAggregateRateLimiter/MultiAggregateRateLimiter.abi ../../../contracts/solc/v0.8.24/MultiAggregateRateLimiter/MultiAggregateRateLimiter.bin abb0ecb1ed8621f26e43b39f5fa25f3d0b6d6c184fa37c404c4389605ecb74e7 nonce_manager: ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin cdc11c1ab4c1c3fd77f30215e9c579404a6e60eb9adc213d73ca0773c3bb5784 ocr3_config_encoder: ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.abi ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.bin e21180898e1ad54a045ee20add85a2793c681425ea06f66d1a9e5cab128b6487 -ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin fa113052eafd644fd9d25558bf13ebf0be15e51de93477d74eea913801d0f752 +ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin d41d1f20d767c4b050045a1909e6d7a87e919f0fd3a17831e1fe455c87a21e1d price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin 0b3e253684d7085aa11f9179b71453b9db9d11cabea41605d5b4ac4128f85bfb registry_module_owner_custom: ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.abi ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.bin cbe7698bfd811b485ac3856daf073a7bdebeefdf2583403ca4a19d5b7e2d4ae8 router: ../../../contracts/solc/v0.8.24/Router/Router.abi ../../../contracts/solc/v0.8.24/Router/Router.bin 42576577e81beea9a069bd9229caaa9a71227fbaef3871a1a2e69fd218216290 -self_funded_ping_pong: ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin eedfacbd19d13edfbddae5a693aa58c31595732ecb54f371d3155da244b65344 +self_funded_ping_pong: ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin 9dd31e03f6c414fc8961e95515962039f093f35d0f27bfde32fce5add2b6d15a token_admin_registry: ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.abi ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.bin fb06d2cf5f7476e512c6fb7aab8eab43545efd7f0f6ca133c64ff4e3963902c4 token_pool: ../../../contracts/solc/v0.8.24/TokenPool/TokenPool.abi ../../../contracts/solc/v0.8.24/TokenPool/TokenPool.bin 47a83e91b28ad1381a2a5882e2adfe168809a63a8f533ab1631f174550c64bed usdc_token_pool: ../../../contracts/solc/v0.8.24/USDCTokenPool/USDCTokenPool.abi ../../../contracts/solc/v0.8.24/USDCTokenPool/USDCTokenPool.bin 48caf06855a2f60455364d384e5fb2e6ecdf0a9ce4c1fc706b54b9885df76695