diff --git a/contracts/.changeset/proud-brooms-fetch.md b/contracts/.changeset/proud-brooms-fetch.md new file mode 100644 index 00000000000..1ab6e455c29 --- /dev/null +++ b/contracts/.changeset/proud-brooms-fetch.md @@ -0,0 +1,10 @@ +--- +'@chainlink/contracts': patch +--- + +minor gas optimizations and input sanity checks for CCIPHome #bugfix + + +PR issue: CCIP-4075 + +Solidity Review issue: CCIP-3966 \ No newline at end of file diff --git a/contracts/gas-snapshots/ccip.gas-snapshot b/contracts/gas-snapshots/ccip.gas-snapshot index 94171b78b29..667258f4619 100644 --- a/contracts/gas-snapshots/ccip.gas-snapshot +++ b/contracts/gas-snapshots/ccip.gas-snapshot @@ -39,18 +39,18 @@ CCIPHome__validateConfig:test__validateConfig_TooManySigners_Reverts() (gas: 773 CCIPHome__validateConfig:test__validateConfig_ZeroP2PId_Reverts() (gas: 293455) CCIPHome__validateConfig:test__validateConfig_ZeroSignerKey_Reverts() (gas: 293503) CCIPHome_applyChainConfigUpdates:test__applyChainConfigUpdates_FChainNotPositive_Reverts() (gas: 187738) -CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_addChainConfigs_Success() (gas: 349752) +CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_addChainConfigs_Success() (gas: 349623) CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_nodeNotInRegistry_Reverts() (gas: 18065) CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_removeChainConfigs_Success() (gas: 272742) CCIPHome_applyChainConfigUpdates:test_applyChainConfigUpdates_selectorNotFound_Reverts() (gas: 14952) -CCIPHome_applyChainConfigUpdates:test_getPaginatedCCIPHomes_Success() (gas: 373741) +CCIPHome_applyChainConfigUpdates:test_getPaginatedCCIPHomes_Success() (gas: 372561) CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_DONIdMismatch_reverts() (gas: 38098) CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_InnerCallReverts_reverts() (gas: 11827) CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_InvalidSelector_reverts() (gas: 11015) CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_OnlyCapabilitiesRegistryCanCall_reverts() (gas: 37072) CCIPHome_beforeCapabilityConfigSet:test_beforeCapabilityConfigSet_success() (gas: 1455716) -CCIPHome_constructor:test_constructor_CapabilitiesRegistryAddressZero_reverts() (gas: 63876) -CCIPHome_constructor:test_constructor_success() (gas: 3499586) +CCIPHome_constructor:test_constructor_CapabilitiesRegistryAddressZero_reverts() (gas: 63859) +CCIPHome_constructor:test_constructor_success() (gas: 3484144) CCIPHome_constructor:test_getCapabilityConfiguration_success() (gas: 9150) CCIPHome_constructor:test_supportsInterface_success() (gas: 9907) CCIPHome_getAllConfigs:test_getAllConfigs_success() (gas: 2773000) @@ -606,15 +606,16 @@ RMNHome_setDynamicConfig:test_setDynamicConfig_MinObserversTooHigh_reverts() (ga RMNHome_setDynamicConfig:test_setDynamicConfig_OnlyOwner_reverts() (gas: 14099) RMNHome_setDynamicConfig:test_setDynamicConfig_success() (gas: 104862) RMNRemote_constructor:test_constructor_success() (gas: 8334) -RMNRemote_constructor:test_constructor_zeroChainSelector_reverts() (gas: 59238) +RMNRemote_constructor:test_constructor_zeroChainSelector_reverts() (gas: 59245) RMNRemote_curse:test_curse_AlreadyCursed_duplicateSubject_reverts() (gas: 154479) RMNRemote_curse:test_curse_calledByNonOwner_reverts() (gas: 18802) RMNRemote_curse:test_curse_success() (gas: 149431) RMNRemote_global_and_legacy_curses:test_global_and_legacy_curses_success() (gas: 133512) -RMNRemote_setConfig:test_setConfig_addSigner_removeSigner_success() (gas: 993400) -RMNRemote_setConfig:test_setConfig_duplicateOnChainPublicKey_reverts() (gas: 323497) -RMNRemote_setConfig:test_setConfig_invalidSignerOrder_reverts() (gas: 80115) -RMNRemote_setConfig:test_setConfig_notEnoughSigners_reverts() (gas: 54212) +RMNRemote_setConfig:test_setConfig_ZeroValueNotAllowed_revert() (gas: 37971) +RMNRemote_setConfig:test_setConfig_addSigner_removeSigner_success() (gas: 993448) +RMNRemote_setConfig:test_setConfig_duplicateOnChainPublicKey_reverts() (gas: 323540) +RMNRemote_setConfig:test_setConfig_invalidSignerOrder_reverts() (gas: 80201) +RMNRemote_setConfig:test_setConfig_notEnoughSigners_reverts() (gas: 54232) RMNRemote_uncurse:test_uncurse_NotCursed_duplicatedUncurseSubject_reverts() (gas: 51993) RMNRemote_uncurse:test_uncurse_calledByNonOwner_reverts() (gas: 18772) RMNRemote_uncurse:test_uncurse_success() (gas: 40171) @@ -622,7 +623,7 @@ RMNRemote_verify_withConfigNotSet:test_verify_reverts() (gas: 13578) RMNRemote_verify_withConfigSet:test_verify_InvalidSignature_reverts() (gas: 96449) RMNRemote_verify_withConfigSet:test_verify_OutOfOrderSignatures_duplicateSignature_reverts() (gas: 94267) RMNRemote_verify_withConfigSet:test_verify_OutOfOrderSignatures_not_sorted_reverts() (gas: 101330) -RMNRemote_verify_withConfigSet:test_verify_ThresholdNotMet_reverts() (gas: 303846) +RMNRemote_verify_withConfigSet:test_verify_ThresholdNotMet_reverts() (gas: 303866) RMNRemote_verify_withConfigSet:test_verify_UnexpectedSigner_reverts() (gas: 427512) RMNRemote_verify_withConfigSet:test_verify_success() (gas: 86159) RateLimiter_constructor:test_Constructor_Success() (gas: 19806) diff --git a/contracts/src/v0.8/ccip/capability/CCIPHome.sol b/contracts/src/v0.8/ccip/capability/CCIPHome.sol index 26650e925ac..aab4afc129c 100644 --- a/contracts/src/v0.8/ccip/capability/CCIPHome.sol +++ b/contracts/src/v0.8/ccip/capability/CCIPHome.sol @@ -416,6 +416,7 @@ contract CCIPHome is OwnerIsCreator, ITypeAndVersion, ICapabilityConfiguration, if (digestToRevoke != ZERO_DIGEST) { emit ActiveConfigRevoked(digestToRevoke); } + emit ConfigPromoted(digestToPromote); } @@ -431,7 +432,7 @@ contract CCIPHome is OwnerIsCreator, ITypeAndVersion, ICapabilityConfiguration, uint32 version ) internal view returns (bytes32) { return bytes32( - (PREFIX & PREFIX_MASK) + PREFIX | ( uint256( keccak256( @@ -551,9 +552,8 @@ contract CCIPHome is OwnerIsCreator, ITypeAndVersion, ICapabilityConfiguration, ChainConfigArgs[] memory paginatedChainConfigs = new ChainConfigArgs[](endIndex - startIndex); - uint256[] memory chainSelectors = s_remoteChainSelectors.values(); for (uint256 i = startIndex; i < endIndex; ++i) { - uint64 chainSelector = uint64(chainSelectors[i]); + uint64 chainSelector = uint64(s_remoteChainSelectors.at(i)); paginatedChainConfigs[i - startIndex] = ChainConfigArgs({chainSelector: chainSelector, chainConfig: s_chainConfigurations[chainSelector]}); } diff --git a/contracts/src/v0.8/ccip/rmn/RMNHome.sol b/contracts/src/v0.8/ccip/rmn/RMNHome.sol index f9a9f938809..f24992cef81 100644 --- a/contracts/src/v0.8/ccip/rmn/RMNHome.sol +++ b/contracts/src/v0.8/ccip/rmn/RMNHome.sol @@ -283,6 +283,7 @@ contract RMNHome is OwnerIsCreator, ITypeAndVersion { if (digestToRevoke != ZERO_DIGEST) { emit ActiveConfigRevoked(digestToRevoke); } + emit ConfigPromoted(digestToPromote); } @@ -311,7 +312,7 @@ contract RMNHome is OwnerIsCreator, ITypeAndVersion { /// @return The calculated config digest. function _calculateConfigDigest(bytes memory staticConfig, uint32 version) internal view returns (bytes32) { return bytes32( - (PREFIX & PREFIX_MASK) + PREFIX | ( uint256( keccak256(bytes.concat(abi.encode(bytes32("EVM"), block.chainid, address(this), version), staticConfig)) diff --git a/contracts/src/v0.8/ccip/rmn/RMNRemote.sol b/contracts/src/v0.8/ccip/rmn/RMNRemote.sol index 6bc75663865..24eed6b2e50 100644 --- a/contracts/src/v0.8/ccip/rmn/RMNRemote.sol +++ b/contracts/src/v0.8/ccip/rmn/RMNRemote.sol @@ -137,6 +137,10 @@ contract RMNRemote is OwnerIsCreator, ITypeAndVersion, IRMNRemote { function setConfig( Config calldata newConfig ) external onlyOwner { + if (newConfig.rmnHomeContractConfigDigest == bytes32(0)) { + revert ZeroValueNotAllowed(); + } + // signers are in ascending order of nodeIndex for (uint256 i = 1; i < newConfig.signers.length; ++i) { if (!(newConfig.signers[i - 1].nodeIndex < newConfig.signers[i].nodeIndex)) { diff --git a/contracts/src/v0.8/ccip/test/rmn/RMNRemote.t.sol b/contracts/src/v0.8/ccip/test/rmn/RMNRemote.t.sol index 25894cc2faa..1436ed6618b 100644 --- a/contracts/src/v0.8/ccip/test/rmn/RMNRemote.t.sol +++ b/contracts/src/v0.8/ccip/test/rmn/RMNRemote.t.sol @@ -18,6 +18,15 @@ contract RMNRemote_constructor is RMNRemoteSetup { } contract RMNRemote_setConfig is RMNRemoteSetup { + function test_setConfig_ZeroValueNotAllowed_revert() public { + RMNRemote.Config memory config = + RMNRemote.Config({rmnHomeContractConfigDigest: bytes32(0), signers: s_signers, f: 1}); + + vm.expectRevert(RMNRemote.ZeroValueNotAllowed.selector); + + s_rmnRemote.setConfig(config); + } + function test_setConfig_addSigner_removeSigner_success() public { uint32 currentConfigVersion = 0; uint256 numSigners = s_signers.length; diff --git a/core/gethwrappers/ccip/generated/ccip_home/ccip_home.go b/core/gethwrappers/ccip/generated/ccip_home/ccip_home.go index 0897a414161..e46899edcf1 100644 --- a/core/gethwrappers/ccip/generated/ccip_home/ccip_home.go +++ b/core/gethwrappers/ccip/generated/ccip_home/ccip_home.go @@ -66,7 +66,7 @@ type CCIPHomeVersionedConfig struct { var CCIPHomeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"capabilitiesRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CanOnlySelfCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainSelectorNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainSelectorNotSet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"expectedConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"gotConfigDigest\",\"type\":\"bytes32\"}],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"callDonId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"capabilityRegistryDonId\",\"type\":\"uint32\"}],\"name\":\"DONIdMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FChainMustBePositive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fChain\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"FRoleDON\",\"type\":\"uint256\"}],\"name\":\"FChainTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signerKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"transmitterKey\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Node\",\"name\":\"node\",\"type\":\"tuple\"}],\"name\":\"InvalidNode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPluginType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"InvalidSelector\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoOpStateTransitionNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"got\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimum\",\"type\":\"uint256\"}],\"name\":\"NotEnoughTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfframpAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCapabilitiesRegistryCanCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RMNHomeAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RevokingZeroDigestNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManySigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"name\":\"ActiveConfigRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"name\":\"CandidateConfigRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"CapabilityConfigurationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"ChainConfigRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structCCIPHome.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"name\":\"ChainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"name\":\"ConfigPromoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"FRoleDON\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offrampAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"rmnHomeAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signerKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"transmitterKey\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Node[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structCCIPHome.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"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\":\"chainSelectorRemoves\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPHome.ChainConfigArgs[]\",\"name\":\"chainConfigAdds\",\"type\":\"tuple[]\"}],\"name\":\"applyChainConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"update\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"beforeCapabilityConfigSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"}],\"name\":\"getActiveDigest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pageIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pageSize\",\"type\":\"uint256\"}],\"name\":\"getAllChainConfigs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32[]\",\"name\":\"readers\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"fChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.ChainConfig\",\"name\":\"chainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPHome.ChainConfigArgs[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"}],\"name\":\"getAllConfigs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"FRoleDON\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offrampAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"rmnHomeAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signerKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"transmitterKey\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Node[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPHome.VersionedConfig\",\"name\":\"activeConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"FRoleDON\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offrampAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"rmnHomeAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signerKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"transmitterKey\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Node[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPHome.VersionedConfig\",\"name\":\"candidateConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"}],\"name\":\"getCandidateDigest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"getCapabilityConfiguration\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"configuration\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCapabilityRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"FRoleDON\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offrampAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"rmnHomeAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signerKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"transmitterKey\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Node[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"structCCIPHome.VersionedConfig\",\"name\":\"versionedConfig\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"ok\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"}],\"name\":\"getConfigDigests\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"activeConfigDigest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"candidateConfigDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumChainConfigurations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"digestToPromote\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digestToRevoke\",\"type\":\"bytes32\"}],\"name\":\"promoteCandidateAndRevokeActive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"name\":\"revokeCandidate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enumInternal.OCRPluginType\",\"name\":\"pluginType\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"FRoleDON\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offrampAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"rmnHomeAddress\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signerKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"transmitterKey\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Node[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"internalType\":\"structCCIPHome.OCR3Config\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digestToOverwrite\",\"type\":\"bytes32\"}],\"name\":\"setCandidate\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"newConfigDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"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\"}]", - Bin: "0x60a06040526006805463ffffffff191690553480156200001e57600080fd5b5060405162004dbe38038062004dbe8339810160408190526200004191620001b3565b3380600081620000985760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000cb57620000cb8162000108565b5050506001600160a01b038116620000f6576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0316608052620001e5565b336001600160a01b03821603620001625760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200008f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001c657600080fd5b81516001600160a01b0381168114620001de57600080fd5b9392505050565b608051614baf6200020f60003960008181610180015281816122360152612cf20152614baf6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806379ba5097116100cd578063b74b235611610081578063f2fde38b11610066578063f2fde38b14610356578063f442c89a14610369578063fba64a7c1461037c57600080fd5b8063b74b235614610323578063bae4e0fa1461034357600080fd5b80638318ed5d116100b25780638318ed5d146102d15780638da5cb5b146102f2578063922ea4061461031057600080fd5b806379ba5097146102c15780637ac0d41e146102c957600080fd5b80633df45a72116101245780635a837f97116101095780635a837f97146102785780635f1edd9c1461028d5780637524051a146102ae57600080fd5b80633df45a721461022f5780634851d5491461025057600080fd5b806301ffc9a714610156578063020330e61461017e578063181f5a77146101c557806333d9704a1461020e575b600080fd5b610169610164366004613091565b61038f565b60405190151581526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6102016040518060400160405280601281526020017f43434950486f6d6520312e362e302d646576000000000000000000000000000081525081565b6040516101759190613123565b61022161021c366004613170565b610428565b6040516101759291906133aa565b61024261023d3660046133ce565b610922565b604051610175929190613407565b61026361025e3660046133ce565b611222565b60408051928352602083019190915201610175565b61028b61028636600461342c565b611318565b005b6102a061029b3660046133ce565b61162b565b604051908152602001610175565b61028b6102bc366004613170565b6116a2565b61028b61188d565b6102a061198a565b6102016102df366004613472565b5060408051602081019091526000815290565b60005473ffffffffffffffffffffffffffffffffffffffff166101a0565b6102a061031e3660046133ce565b61199b565b61033661033136600461348f565b6119ec565b6040516101759190613528565b6102a06103513660046135c6565b611c6d565b61028b610364366004613636565b611e6b565b61028b6103773660046136b1565b611e7f565b61028b61038a36600461373e565b61221e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f78bea72100000000000000000000000000000000000000000000000000000000148061042257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610430612f1a565b6000805b60028110156109145763ffffffff861660009081526005602052604081208591876001811115610466576104666131b1565b6001811115610477576104776131b1565b81526020019081526020016000208260028110610496576104966137fb565b60070201600101541480156104aa57508315155b1561090c5763ffffffff86166000908152600560205260408120908660018111156104d7576104d76131b1565b60018111156104e8576104e86131b1565b81526020019081526020016000208160028110610507576105076137fb565b6040805160608101825260079290920292909201805463ffffffff1682526001808201546020840152835161010081018552600283018054939592949386938501929190829060ff1687811115610560576105606131b1565b6001811115610571576105716131b1565b8152815467ffffffffffffffff61010082048116602084015260ff690100000000000000000083041660408401526a01000000000000000000009091041660608201526001820180546080909201916105c99061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546105f59061382a565b80156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b5050505050815260200160028201805461065b9061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546106879061382a565b80156106d45780601f106106a9576101008083540402835291602001916106d4565b820191906000526020600020905b8154815290600101906020018083116106b757829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561086257838290600052602060002090600302016040518060600160405290816000820154815260200160018201805461073f9061382a565b80601f016020809104026020016040519081016040528092919081815260200182805461076b9061382a565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081526020016002820180546107d19061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546107fd9061382a565b801561084a5780601f1061081f5761010080835404028352916020019161084a565b820191906000526020600020905b81548152906001019060200180831161082d57829003601f168201915b50505050508152505081526020019060010190610702565b50505050815260200160048201805461087a9061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546108a69061382a565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b505050505081525050815250509150925092505061091a565b600101610434565b50600090505b935093915050565b61092a612f1a565b610932612f1a565b63ffffffff841660009081526005602052604081208185600181111561095a5761095a6131b1565b600181111561096b5761096b6131b1565b815260200190815260200160002061098386866124db565b63ffffffff1660028110610999576109996137fb565b6040805160608101825260079290920292909201805463ffffffff1682526001808201546020840152835161010081018552600283018054949593949386019391929091839160ff909116908111156109f4576109f46131b1565b6001811115610a0557610a056131b1565b8152815467ffffffffffffffff61010082048116602084015260ff690100000000000000000083041660408401526a0100000000000000000000909104166060820152600182018054608090920191610a5d9061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a899061382a565b8015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b50505050508152602001600282018054610aef9061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1b9061382a565b8015610b685780601f10610b3d57610100808354040283529160200191610b68565b820191906000526020600020905b815481529060010190602001808311610b4b57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610cf6578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054610bd39061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bff9061382a565b8015610c4c5780601f10610c2157610100808354040283529160200191610c4c565b820191906000526020600020905b815481529060010190602001808311610c2f57829003601f168201915b50505050508152602001600282018054610c659061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c919061382a565b8015610cde5780601f10610cb357610100808354040283529160200191610cde565b820191906000526020600020905b815481529060010190602001808311610cc157829003601f168201915b50505050508152505081526020019060010190610b96565b505050508152602001600482018054610d0e9061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a9061382a565b8015610d875780601f10610d5c57610100808354040283529160200191610d87565b820191906000526020600020905b815481529060010190602001808311610d6a57829003601f168201915b50505091909252505050905250602081015190915015610da5578092505b63ffffffff8516600090815260056020526040812081866001811115610dcd57610dcd6131b1565b6001811115610dde57610dde6131b1565b8152602001908152602001600020610df68787612532565b63ffffffff1660028110610e0c57610e0c6137fb565b6040805160608101825260079290920292909201805463ffffffff1682526001808201546020840152835161010081018552600283018054949593949386019391929091839160ff90911690811115610e6757610e676131b1565b6001811115610e7857610e786131b1565b8152815467ffffffffffffffff61010082048116602084015260ff690100000000000000000083041660408401526a0100000000000000000000909104166060820152600182018054608090920191610ed09061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610efc9061382a565b8015610f495780601f10610f1e57610100808354040283529160200191610f49565b820191906000526020600020905b815481529060010190602001808311610f2c57829003601f168201915b50505050508152602001600282018054610f629061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8e9061382a565b8015610fdb5780601f10610fb057610100808354040283529160200191610fdb565b820191906000526020600020905b815481529060010190602001808311610fbe57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156111695783829060005260206000209060030201604051806060016040529081600082015481526020016001820180546110469061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546110729061382a565b80156110bf5780601f10611094576101008083540402835291602001916110bf565b820191906000526020600020905b8154815290600101906020018083116110a257829003601f168201915b505050505081526020016002820180546110d89061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546111049061382a565b80156111515780601f1061112657610100808354040283529160200191611151565b820191906000526020600020905b81548152906001019060200180831161113457829003601f168201915b50505050508152505081526020019060010190611009565b5050505081526020016004820180546111819061382a565b80601f01602080910402602001604051908101604052809291908181526020018280546111ad9061382a565b80156111fa5780601f106111cf576101008083540402835291602001916111fa565b820191906000526020600020905b8154815290600101906020018083116111dd57829003601f168201915b50505091909252505050905250602081015190915015611218578092505b50505b9250929050565b63ffffffff8216600090815260056020526040812081908184600181111561124c5761124c6131b1565b600181111561125d5761125d6131b1565b815260200190815260200160002061127585856124db565b63ffffffff166002811061128b5761128b6137fb565b6007020160010154600560008663ffffffff1663ffffffff16815260200190815260200160002060008560018111156112c6576112c66131b1565b60018111156112d7576112d76131b1565b81526020019081526020016000206112ef8686612532565b63ffffffff1660028110611305576113056137fb565b6007020160010154915091509250929050565b61132061258d565b8115801561132c575080155b15611363576040517f7b4d1e4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061136f8585612532565b63ffffffff86811660009081526005602052604081209290911692508491908660018111156113a0576113a06131b1565b60018111156113b1576113b16131b1565b815260200190815260200160002082600281106113d0576113d06137fb565b6007020160010154146114845763ffffffff8516600090815260056020526040812090856001811115611405576114056131b1565b6001811115611416576114166131b1565b81526020019081526020016000208160028110611435576114356137fb565b6007020160010154836040517f93df584c00000000000000000000000000000000000000000000000000000000815260040161147b929190918252602082015260400190565b60405180910390fd5b63ffffffff85166000908152600560205260408120818660018111156114ac576114ac6131b1565b60018111156114bd576114bd6131b1565b81526020019081526020016000206114d587876124db565b63ffffffff16600281106114eb576114eb6137fb565b6007020190508281600101541461153e5760018101546040517f93df584c00000000000000000000000000000000000000000000000000000000815260048101919091526024810184905260440161147b565b6000600180830182905563ffffffff881682526007602052604082209091878381111561156d5761156d6131b1565b600181111561157e5761157e6131b1565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000811663ffffffff918216939093181691909117905582156115f85760405183907f0b31c0055e2d464bef7781994b98c4ff9ef4ae0d05f59feb6a68c42de5e201b890600090a25b60405184907ffc3e98dbbd47c3fa7c1c05b6ec711caeaf70eca4554192b9ada8fc11a37f298e90600090a2505050505050565b63ffffffff8216600090815260056020526040812081836001811115611653576116536131b1565b6001811115611664576116646131b1565b815260200190815260200160002061167c84846124db565b63ffffffff1660028110611692576116926137fb565b6007020160010154905092915050565b6116aa61258d565b806116e1576040517f0849d8cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116ed8484612532565b63ffffffff858116600090815260056020526040812092909116925083919085600181111561171e5761171e6131b1565b600181111561172f5761172f6131b1565b8152602001908152602001600020826002811061174e5761174e6137fb565b6007020160010154146117f95763ffffffff8416600090815260056020526040812090846001811115611783576117836131b1565b6001811115611794576117946131b1565b815260200190815260200160002081600281106117b3576117b36137fb565b6007020160010154826040517f93df584c00000000000000000000000000000000000000000000000000000000815260040161147b929190918252602082015260400190565b60405182907f53f5d9228f0a4173bea6e5931c9b3afe6eeb6692ede1d182952970f152534e3b90600090a263ffffffff841660009081526005602052604081209084600181111561184c5761184c6131b1565b600181111561185d5761185d6131b1565b8152602001908152602001600020816002811061187c5761187c6137fb565b600702016001016000905550505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015260640161147b565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b600061199660036125c8565b905090565b63ffffffff82166000908152600560205260408120818360018111156119c3576119c36131b1565b60018111156119d4576119d46131b1565b815260200190815260200160002061167c8484612532565b606060006119fa60036125c8565b90506000611a0884866138ac565b9050831580611a175750818110155b15611a57576040805160008082526020820190925290611a4d565b611a3a612f96565b815260200190600190039081611a325790505b5092505050610422565b6000611a6385836138f2565b905082811115611a705750815b6000611a7c8383613905565b67ffffffffffffffff811115611a9457611a946138c3565b604051908082528060200260200182016040528015611acd57816020015b611aba612f96565b815260200190600190039081611ab25790505b5090506000611adc60036125d2565b9050835b83811015611c60576000828281518110611afc57611afc6137fb565b60209081029190910181015160408051808201825267ffffffffffffffff831680825260009081526002855282902082518154608081880283018101909552606082018181529597509295860194909391928492849190840182828015611b8257602002820191906000526020600020905b815481526020019060010190808311611b6e575b5050509183525050600182015460ff166020820152600282018054604090920191611bac9061382a565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd89061382a565b8015611c255780601f10611bfa57610100808354040283529160200191611c25565b820191906000526020600020905b815481529060010190602001808311611c0857829003601f168201915b50505091909252505050905284611c3c8885613905565b81518110611c4c57611c4c6137fb565b602090810291909101015250600101611ae0565b5090979650505050505050565b6000611c7761258d565b611c88611c8384613b3e565b6125e6565b6000611c94868661199b565b9050828114611cd9576040517f93df584c000000000000000000000000000000000000000000000000000000008152600481018290526024810184905260440161147b565b8015611d0b5760405183907f53f5d9228f0a4173bea6e5931c9b3afe6eeb6692ede1d182952970f152534e3b90600090a25b60068054600091908290611d249063ffffffff16613c3a565b91906101000a81548163ffffffff021916908363ffffffff16021790559050611d6e878787604051602001611d599190613f16565b60405160208183030381529060405284612a54565b63ffffffff881660009081526005602052604081209194509081886001811115611d9a57611d9a6131b1565b6001811115611dab57611dab6131b1565b8152602001908152602001600020611dc38989612532565b63ffffffff1660028110611dd957611dd96137fb565b600702016001810185905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff841617815590508560028201611e2382826143fc565b905050837f94f085b7c57ec2a270befd0b7b2ec7452580040edee8bb0fb04609c81f0359c68388604051611e589291906145c3565b60405180910390a2505050949350505050565b611e73612b14565b611e7c81612b95565b50565b611e87612b14565b60005b8381101561206d57611ece858583818110611ea757611ea76137fb565b9050602002016020810190611ebc91906145ea565b60039067ffffffffffffffff16612c8a565b611f3857848482818110611ee457611ee46137fb565b9050602002016020810190611ef991906145ea565b6040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260240161147b565b60026000868684818110611f4e57611f4e6137fb565b9050602002016020810190611f6391906145ea565b67ffffffffffffffff1681526020810191909152604001600090812090611f8a8282612fd9565b6001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611fc2600283016000612ff7565b5050612000858583818110611fd957611fd96137fb565b9050602002016020810190611fee91906145ea565b60039067ffffffffffffffff16612ca2565b507f2a680691fef3b2d105196805935232c661ce703e92d464ef0b94a7bc62d714f0858583818110612034576120346137fb565b905060200201602081019061204991906145ea565b60405167ffffffffffffffff909116815260200160405180910390a1600101611e8a565b5060005b8181101561221757600083838381811061208d5761208d6137fb565b905060200281019061209f9190614607565b6120ad90602081019061415f565b6120b69061463b565b905060008484848181106120cc576120cc6137fb565b90506020028101906120de9190614607565b6120ec9060208101906145ea565b90506120fb8260000151612cae565b816020015160ff1660000361213c576040517fa9b3766e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8116600090815260026020908152604090912083518051859361216c928492910190613031565b5060208201516001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff909216919091179055604082015160028201906121b9908261470d565b506121d391506003905067ffffffffffffffff8316612d70565b507f05dd57854af2c291a94ea52e7c43d80bc3be7fa73022f98b735dea86642fa5e08183604051612205929190614809565b60405180910390a15050600101612071565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461228d576040517fac7a7efd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061229c600482868861482c565b6122a591614856565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbae4e0fa000000000000000000000000000000000000000000000000000000001480159061233b57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7524051a0000000000000000000000000000000000000000000000000000000014155b801561238957507fffffffff0000000000000000000000000000000000000000000000000000000081167f5a837f970000000000000000000000000000000000000000000000000000000014155b156123e4576040517f12ba286f0000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008216600482015260240161147b565b60006123f460246004878961482c565b810190612401919061489e565b90508263ffffffff168114612452576040517f8a6e4ce800000000000000000000000000000000000000000000000000000000815263ffffffff80831660048301528416602482015260440161147b565b6000803073ffffffffffffffffffffffffffffffffffffffff16888860405161247c9291906148b7565b6000604051808303816000865af19150503d80600081146124b9576040519150601f19603f3d011682016040523d82523d6000602084013e6124be565b606091505b5091509150816124cf573d60208201fd5b50505050505050505050565b63ffffffff8216600090815260076020526040812081836001811115612503576125036131b1565b6001811115612514576125146131b1565b815260208101919091526040016000205463ffffffff169392505050565b63ffffffff821660009081526007602052604081208183600181111561255a5761255a6131b1565b600181111561256b5761256b6131b1565b815260208101919091526040016000205463ffffffff16600118905092915050565b3330146125c6576040517f371a732800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610422825490565b606060006125df83612d7c565b9392505050565b806020015167ffffffffffffffff1660000361262e576040517f698cf8e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081516001811115612643576126436131b1565b141580156126645750600181516001811115612661576126616131b1565b14155b1561269b576040517f3302dbd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515115806126d8575060408051600060208201520160405160208183030381529060405280519060200120816080015180519060200120145b1561270f576040517f358c192700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015151158061274c5750604080516000602082015201604051602081830303815290604052805190602001208160a0015180519060200120145b15612783576040517fdee9857400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161279e9060039067ffffffffffffffff16612c8a565b6127e65760208101516040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260240161147b565b60408082015160208084015167ffffffffffffffff1660009081526002909152919091206001015460ff918216911681811115612859576040517f2db22040000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161147b565b60c08301515161010081111561289b576040517f1b925da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128a68360036138ac565b81116128de576040517f4856694e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808267ffffffffffffffff8111156128fa576128fa6138c3565b604051908082528060200260200182016040528015612923578160200160208202803683370190505b50905060005b838110156129e35760008760c001518281518110612949576129496137fb565b6020026020010151905080604001515160001461296e578361296a816148c7565b9450505b602081015151158061297f57508051155b156129b857806040517f9fa4031400000000000000000000000000000000000000000000000000000000815260040161147b91906148ff565b80600001518383815181106129cf576129cf6137fb565b602090810291909101015250600101612929565b5060006129f18560036138ac565b6129fc9060016138f2565b905080831015612a42576040517f548dd21f000000000000000000000000000000000000000000000000000000008152600481018490526024810182905260440161147b565b612a4b82612cae565b50505050505050565b6040516000907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90612ab2907f45564d000000000000000000000000000000000000000000000000000000000090469030908a908a908990602001614912565b60408051601f1981840301815290829052612ad191869060200161496b565b60408051808303601f190181529190528051602090910120167e0a0000000000000000000000000000000000000000000000000000000000001795945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146125c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161147b565b3373ffffffffffffffffffffffffffffffffffffffff821603612c14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161147b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260018301602052604081205415156125df565b60006125df8383612dd8565b805115611e7c576040517f05a5196600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906305a5196690612d2790849060040161499a565b600060405180830381865afa158015612d44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d6c9190810190614a17565b5050565b60006125df8383612ecb565b606081600001805480602002602001604051908101604052809291908181526020018280548015612dcc57602002820191906000526020600020905b815481526020019060010190808311612db8575b50505050509050919050565b60008181526001830160205260408120548015612ec1576000612dfc600183613905565b8554909150600090612e1090600190613905565b9050808214612e75576000866000018281548110612e3057612e306137fb565b9060005260206000200154905080876000018481548110612e5357612e536137fb565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e8657612e86614b73565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610422565b6000915050610422565b6000818152600183016020526040812054612f1257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610422565b506000610422565b6040805160608101825260008082526020820152908101612f916040805161010081019091528060008152602001600067ffffffffffffffff168152602001600060ff168152602001600067ffffffffffffffff168152602001606081526020016060815260200160608152602001606081525090565b905290565b6040518060400160405280600067ffffffffffffffff168152602001612f91604051806060016040528060608152602001600060ff168152602001606081525090565b5080546000825590600052602060002090810190611e7c919061307c565b5080546130039061382a565b6000825580601f10613013575050565b601f016020900490600052602060002090810190611e7c919061307c565b82805482825590600052602060002090810192821561306c579160200282015b8281111561306c578251825591602001919060010190613051565b5061307892915061307c565b5090565b5b80821115613078576000815560010161307d565b6000602082840312156130a357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146125df57600080fd5b60005b838110156130ee5781810151838201526020016130d6565b50506000910152565b6000815180845261310f8160208601602086016130d3565b601f01601f19169290920160200192915050565b6020815260006125df60208301846130f7565b63ffffffff81168114611e7c57600080fd5b803561315381613136565b919050565b60028110611e7c57600080fd5b803561315381613158565b60008060006060848603121561318557600080fd5b833561319081613136565b925060208401356131a081613158565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110613217577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b80518252600060208201516060602085015261323a60608501826130f7565b90506040830151848203604086015261325382826130f7565b95945050505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015611c6057601f1986840301895261329783835161321b565b9884019892509083019060010161327b565b63ffffffff81511682526020810151602083015260006040820151606060408501526132d96060850182516131e0565b602081015167ffffffffffffffff8116608086015250604081015160ff811660a086015250606081015167ffffffffffffffff811660c08601525060808101516101008060e08701526133306101608701836130f7565b915060a08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa080888503018389015261336b84836130f7565b935060c085015192508088850301610120890152613389848461325c565b935060e08501519450808885030161014089015250505061325381836130f7565b6040815260006133bd60408301856132a9565b905082151560208301529392505050565b600080604083850312156133e157600080fd5b82356133ec81613136565b915060208301356133fc81613158565b809150509250929050565b60408152600061341a60408301856132a9565b828103602084015261325381856132a9565b6000806000806080858703121561344257600080fd5b843561344d81613136565b9350602085013561345d81613158565b93969395505050506040820135916060013590565b60006020828403121561348457600080fd5b81356125df81613136565b600080604083850312156134a257600080fd5b50508035926020909101359150565b60008151808452602080850194506020840160005b838110156134e2578151875295820195908201906001016134c6565b509495945050505050565b600081516060845261350260608501826134b1565b905060ff60208401511660208501526040830151848203604086015261325382826130f7565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156135b8578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805167ffffffffffffffff1684528701518784018790526135a5878501826134ed565b9588019593505090860190600101613551565b509098975050505050505050565b600080600080608085870312156135dc57600080fd5b84356135e781613136565b935060208501356135f781613158565b9250604085013567ffffffffffffffff81111561361357600080fd5b8501610100818803121561362657600080fd5b9396929550929360600135925050565b60006020828403121561364857600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146125df57600080fd5b60008083601f84011261367e57600080fd5b50813567ffffffffffffffff81111561369657600080fd5b6020830191508360208260051b850101111561121b57600080fd5b600080600080604085870312156136c757600080fd5b843567ffffffffffffffff808211156136df57600080fd5b6136eb8883890161366c565b9096509450602087013591508082111561370457600080fd5b506137118782880161366c565b95989497509550505050565b67ffffffffffffffff81168114611e7c57600080fd5b80356131538161371d565b6000806000806000806080878903121561375757600080fd5b863567ffffffffffffffff8082111561376f57600080fd5b61377b8a838b0161366c565b9098509650602089013591508082111561379457600080fd5b818901915089601f8301126137a857600080fd5b8135818111156137b757600080fd5b8a60208285010111156137c957600080fd5b6020830196508095505050506137e160408801613733565b91506137ef60608801613148565b90509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c9082168061383e57607f821691505b602082108103613877577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176104225761042261387d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808201808211156104225761042261387d565b818103818111156104225761042261387d565b6040516060810167ffffffffffffffff8111828210171561393b5761393b6138c3565b60405290565b604051610100810167ffffffffffffffff8111828210171561393b5761393b6138c3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561398e5761398e6138c3565b604052919050565b60ff81168114611e7c57600080fd5b803561315381613996565b600082601f8301126139c157600080fd5b813567ffffffffffffffff8111156139db576139db6138c3565b6139ee6020601f19601f84011601613965565b818152846020838601011115613a0357600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff821115613a3a57613a3a6138c3565b5060051b60200190565b600082601f830112613a5557600080fd5b81356020613a6a613a6583613a20565b613965565b82815260059290921b84018101918181019086841115613a8957600080fd5b8286015b84811015613b3357803567ffffffffffffffff80821115613aae5760008081fd5b8189019150606080601f19848d03011215613ac95760008081fd5b613ad1613918565b87840135815260408085013584811115613aeb5760008081fd5b613af98e8b838901016139b0565b838b015250918401359183831115613b115760008081fd5b613b1f8d8a858801016139b0565b908201528652505050918301918301613a8d565b509695505050505050565b60006101008236031215613b5157600080fd5b613b59613941565b613b6283613165565b8152613b7060208401613733565b6020820152613b81604084016139a5565b6040820152613b9260608401613733565b6060820152608083013567ffffffffffffffff80821115613bb257600080fd5b613bbe368387016139b0565b608084015260a0850135915080821115613bd757600080fd5b613be3368387016139b0565b60a084015260c0850135915080821115613bfc57600080fd5b613c0836838701613a44565b60c084015260e0850135915080821115613c2157600080fd5b50613c2e368286016139b0565b60e08301525092915050565b600063ffffffff808316818103613c5357613c5361387d565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c9257600080fd5b830160208101925035905067ffffffffffffffff811115613cb257600080fd5b80360382131561121b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d2157600080fd5b830160208101925035905067ffffffffffffffff811115613d4157600080fd5b8060051b360382131561121b57600080fd5b60008383855260208086019550808560051b830101846000805b88811015613e1157601f19868503018a5282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1893603018112613daf578283fd5b8801803585526060613dc387830183613c5d565b8289890152613dd58389018284613cc1565b925050506040613de781840184613c5d565b935087830382890152613dfb838583613cc1565b9d89019d97505050938601935050600101613d6d565b509198975050505050505050565b6000610100613e3684613e3185613165565b6131e0565b613e4260208401613733565b67ffffffffffffffff166020850152613e5d604084016139a5565b60ff166040850152613e7160608401613733565b67ffffffffffffffff166060850152613e8d6080840184613c5d565b826080870152613ea08387018284613cc1565b92505050613eb160a0840184613c5d565b85830360a0870152613ec4838284613cc1565b92505050613ed560c0840184613cec565b85830360c0870152613ee8838284613d53565b92505050613ef960e0840184613c5d565b85830360e0870152613f0c838284613cc1565b9695505050505050565b6020815260006125df6020830184613e1f565b600081356104228161371d565b6000813561042281613996565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f7857600080fd5b83018035915067ffffffffffffffff821115613f9357600080fd5b60200191503681900382131561121b57600080fd5b5b81811015612d6c5760008155600101613fa9565b601f821115613ff657806000526020600020601f840160051c81016020851015613fe45750805b612217601f850160051c830182613fa8565b505050565b67ffffffffffffffff831115614013576140136138c3565b61402783614021835461382a565b83613fbd565b6000601f84116001811461407957600085156140435750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612217565b600083815260209020601f19861690835b828110156140aa578685013582556020948501946001909201910161408a565b50868210156140e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261412c57600080fd5b83018035915067ffffffffffffffff82111561414757600080fd5b6020019150600581901b360382131561121b57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261419357600080fd5b9190910192915050565b6141a7815461382a565b8015612d6c57601f8111600181146141c157505060009055565b8260005260206000206141df601f840160051c820160018301613fa8565b60008085559055505050565b81358155600180820160206142036020860186613f43565b67ffffffffffffffff81111561421b5761421b6138c3565b61422f81614229865461382a565b86613fbd565b6000601f821160018114614281576000831561424b5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1786556142f6565b600086815260209020601f19841690835b828110156142af5786850135825593870193908901908701614292565b50848210156142ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c19848701351681555b505060018360011b0186555b5050505050505061430a6040830183613f43565b614318818360028601613ffb565b50505050565b68010000000000000000831115614337576143376138c3565b8054838255808410156143b65760038160030260038104831461435c5761435c61387d565b856003026003810487146143725761437261387d565b6000858152602081209283019291909101905b828210156143b15780825561439c6001830161419d565b6143a86002830161419d565b90830190614385565b505050505b5060008181526020812083915b858110156143f4576143de6143d8848761415f565b836141eb565b60209290920191600391909101906001016143c3565b505050505050565b813561440781613158565b6002811061443e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541660ff82168117835550506144b561447b60208401613f29565b82547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff1660089190911b68ffffffffffffffff0016178255565b6144ff6144c460408401613f36565b82547fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff1660489190911b69ff00000000000000000016178255565b61455161450e60608401613f29565b82547fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff1660509190911b71ffffffffffffffff0000000000000000000016178255565b61455e6080830183613f43565b61456c818360018601613ffb565b505061457b60a0830183613f43565b614589818360028601613ffb565b505061459860c08301836140f7565b6145a681836003860161431e565b50506145b560e0830183613f43565b614318818360048601613ffb565b63ffffffff831681526040602082015260006145e26040830184613e1f565b949350505050565b6000602082840312156145fc57600080fd5b81356125df8161371d565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261419357600080fd5b60006060823603121561464d57600080fd5b614655613918565b823567ffffffffffffffff8082111561466d57600080fd5b9084019036601f83011261468057600080fd5b81356020614690613a6583613a20565b82815260059290921b840181019181810190368411156146af57600080fd5b948201945b838610156146cd578535825294820194908201906146b4565b8652506146db8782016139a5565b908501525060408501359150808211156146f457600080fd5b50614701368286016139b0565b60408301525092915050565b815167ffffffffffffffff811115614727576147276138c3565b61473b81614735845461382a565b84613fbd565b602080601f83116001811461478e57600084156147585750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556143f4565b600085815260208120601f198616915b828110156147bd5788860151825594840194600190910190840161479e565b50858210156147f957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff831681526040602082015260006145e260408301846134ed565b6000808585111561483c57600080fd5b8386111561484957600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156148965780818660040360031b1b83161692505b505092915050565b6000602082840312156148b057600080fd5b5035919050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148f8576148f861387d565b5060010190565b6020815260006125df602083018461321b565b8681526020810186905273ffffffffffffffffffffffffffffffffffffffff8516604082015263ffffffff848116606083015260c082019061495760808401866131e0565b80841660a084015250979650505050505050565b6000835161497d8184602088016130d3565b8351908301906149918183602088016130d3565b01949350505050565b6020815260006125df60208301846134b1565b805161315381613136565b600082601f8301126149c957600080fd5b815160206149d9613a6583613a20565b8083825260208201915060208460051b8701019350868411156149fb57600080fd5b602086015b84811015613b335780518352918301918301614a00565b60006020808385031215614a2a57600080fd5b825167ffffffffffffffff80821115614a4257600080fd5b818501915085601f830112614a5657600080fd5b8151614a64613a6582613a20565b81815260059190911b83018401908481019088831115614a8357600080fd5b8585015b83811015614b6657805185811115614a9e57600080fd5b8601610100818c03601f1901811315614ab657600080fd5b614abe613941565b614ac98a84016149ad565b8152614ad7604084016149ad565b8a820152614ae7606084016149ad565b60408201526080830151606082015260a0830151608082015260c083015160a082015260e08084015189811115614b1e5760008081fd5b614b2c8f8d838801016149b8565b60c084015250918301519188831115614b455760008081fd5b614b538e8c858701016149b8565b9082015285525050918601918601614a87565b5098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", + Bin: "0x60a06040526006805463ffffffff191690553480156200001e57600080fd5b5060405162004d7138038062004d718339810160408190526200004191620001b3565b3380600081620000985760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000cb57620000cb8162000108565b5050506001600160a01b038116620000f6576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b0316608052620001e5565b336001600160a01b03821603620001625760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200008f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001c657600080fd5b81516001600160a01b0381168114620001de57600080fd5b9392505050565b608051614b626200020f600039600081816101800152818161221a0152612cd50152614b626000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806379ba5097116100cd578063b74b235611610081578063f2fde38b11610066578063f2fde38b14610356578063f442c89a14610369578063fba64a7c1461037c57600080fd5b8063b74b235614610323578063bae4e0fa1461034357600080fd5b80638318ed5d116100b25780638318ed5d146102d15780638da5cb5b146102f2578063922ea4061461031057600080fd5b806379ba5097146102c15780637ac0d41e146102c957600080fd5b80633df45a72116101245780635a837f97116101095780635a837f97146102785780635f1edd9c1461028d5780637524051a146102ae57600080fd5b80633df45a721461022f5780634851d5491461025057600080fd5b806301ffc9a714610156578063020330e61461017e578063181f5a77146101c557806333d9704a1461020e575b600080fd5b610169610164366004613042565b61038f565b60405190151581526020015b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610175565b6102016040518060400160405280601281526020017f43434950486f6d6520312e362e302d646576000000000000000000000000000081525081565b60405161017591906130d4565b61022161021c366004613121565b610428565b604051610175929190613368565b61024261023d36600461338c565b610922565b6040516101759291906133c5565b61026361025e36600461338c565b611222565b60408051928352602083019190915201610175565b61028b6102863660046133ea565b611318565b005b6102a061029b36600461338c565b61162b565b604051908152602001610175565b61028b6102bc366004613121565b6116a2565b61028b61188d565b6102a061198a565b6102016102df366004613430565b5060408051602081019091526000815290565b60005473ffffffffffffffffffffffffffffffffffffffff166101a0565b6102a061031e36600461338c565b61199b565b61033661033136600461344d565b6119ec565b60405161017591906134e6565b6102a0610351366004613584565b611c51565b61028b6103643660046135f4565b611e4f565b61028b61037736600461366f565b611e63565b61028b61038a3660046136fc565b612202565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f78bea72100000000000000000000000000000000000000000000000000000000148061042257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610430612ecb565b6000805b60028110156109145763ffffffff86166000908152600560205260408120859187600181111561046657610466613162565b600181111561047757610477613162565b81526020019081526020016000208260028110610496576104966137b9565b60070201600101541480156104aa57508315155b1561090c5763ffffffff86166000908152600560205260408120908660018111156104d7576104d7613162565b60018111156104e8576104e8613162565b81526020019081526020016000208160028110610507576105076137b9565b6040805160608101825260079290920292909201805463ffffffff1682526001808201546020840152835161010081018552600283018054939592949386938501929190829060ff168781111561056057610560613162565b600181111561057157610571613162565b8152815467ffffffffffffffff61010082048116602084015260ff690100000000000000000083041660408401526a01000000000000000000009091041660608201526001820180546080909201916105c9906137e8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f5906137e8565b80156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b5050505050815260200160028201805461065b906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610687906137e8565b80156106d45780601f106106a9576101008083540402835291602001916106d4565b820191906000526020600020905b8154815290600101906020018083116106b757829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561086257838290600052602060002090600302016040518060600160405290816000820154815260200160018201805461073f906137e8565b80601f016020809104026020016040519081016040528092919081815260200182805461076b906137e8565b80156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081526020016002820180546107d1906137e8565b80601f01602080910402602001604051908101604052809291908181526020018280546107fd906137e8565b801561084a5780601f1061081f5761010080835404028352916020019161084a565b820191906000526020600020905b81548152906001019060200180831161082d57829003601f168201915b50505050508152505081526020019060010190610702565b50505050815260200160048201805461087a906137e8565b80601f01602080910402602001604051908101604052809291908181526020018280546108a6906137e8565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b505050505081525050815250509150925092505061091a565b600101610434565b50600090505b935093915050565b61092a612ecb565b610932612ecb565b63ffffffff841660009081526005602052604081208185600181111561095a5761095a613162565b600181111561096b5761096b613162565b815260200190815260200160002061098386866124bf565b63ffffffff1660028110610999576109996137b9565b6040805160608101825260079290920292909201805463ffffffff1682526001808201546020840152835161010081018552600283018054949593949386019391929091839160ff909116908111156109f4576109f4613162565b6001811115610a0557610a05613162565b8152815467ffffffffffffffff61010082048116602084015260ff690100000000000000000083041660408401526a0100000000000000000000909104166060820152600182018054608090920191610a5d906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a89906137e8565b8015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b50505050508152602001600282018054610aef906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1b906137e8565b8015610b685780601f10610b3d57610100808354040283529160200191610b68565b820191906000526020600020905b815481529060010190602001808311610b4b57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610cf6578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054610bd3906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bff906137e8565b8015610c4c5780601f10610c2157610100808354040283529160200191610c4c565b820191906000526020600020905b815481529060010190602001808311610c2f57829003601f168201915b50505050508152602001600282018054610c65906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610c91906137e8565b8015610cde5780601f10610cb357610100808354040283529160200191610cde565b820191906000526020600020905b815481529060010190602001808311610cc157829003601f168201915b50505050508152505081526020019060010190610b96565b505050508152602001600482018054610d0e906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a906137e8565b8015610d875780601f10610d5c57610100808354040283529160200191610d87565b820191906000526020600020905b815481529060010190602001808311610d6a57829003601f168201915b50505091909252505050905250602081015190915015610da5578092505b63ffffffff8516600090815260056020526040812081866001811115610dcd57610dcd613162565b6001811115610dde57610dde613162565b8152602001908152602001600020610df68787612516565b63ffffffff1660028110610e0c57610e0c6137b9565b6040805160608101825260079290920292909201805463ffffffff1682526001808201546020840152835161010081018552600283018054949593949386019391929091839160ff90911690811115610e6757610e67613162565b6001811115610e7857610e78613162565b8152815467ffffffffffffffff61010082048116602084015260ff690100000000000000000083041660408401526a0100000000000000000000909104166060820152600182018054608090920191610ed0906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610efc906137e8565b8015610f495780601f10610f1e57610100808354040283529160200191610f49565b820191906000526020600020905b815481529060010190602001808311610f2c57829003601f168201915b50505050508152602001600282018054610f62906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8e906137e8565b8015610fdb5780601f10610fb057610100808354040283529160200191610fdb565b820191906000526020600020905b815481529060010190602001808311610fbe57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015611169578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054611046906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611072906137e8565b80156110bf5780601f10611094576101008083540402835291602001916110bf565b820191906000526020600020905b8154815290600101906020018083116110a257829003601f168201915b505050505081526020016002820180546110d8906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611104906137e8565b80156111515780601f1061112657610100808354040283529160200191611151565b820191906000526020600020905b81548152906001019060200180831161113457829003601f168201915b50505050508152505081526020019060010190611009565b505050508152602001600482018054611181906137e8565b80601f01602080910402602001604051908101604052809291908181526020018280546111ad906137e8565b80156111fa5780601f106111cf576101008083540402835291602001916111fa565b820191906000526020600020905b8154815290600101906020018083116111dd57829003601f168201915b50505091909252505050905250602081015190915015611218578092505b50505b9250929050565b63ffffffff8216600090815260056020526040812081908184600181111561124c5761124c613162565b600181111561125d5761125d613162565b815260200190815260200160002061127585856124bf565b63ffffffff166002811061128b5761128b6137b9565b6007020160010154600560008663ffffffff1663ffffffff16815260200190815260200160002060008560018111156112c6576112c6613162565b60018111156112d7576112d7613162565b81526020019081526020016000206112ef8686612516565b63ffffffff1660028110611305576113056137b9565b6007020160010154915091509250929050565b611320612571565b8115801561132c575080155b15611363576040517f7b4d1e4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061136f8585612516565b63ffffffff86811660009081526005602052604081209290911692508491908660018111156113a0576113a0613162565b60018111156113b1576113b1613162565b815260200190815260200160002082600281106113d0576113d06137b9565b6007020160010154146114845763ffffffff851660009081526005602052604081209085600181111561140557611405613162565b600181111561141657611416613162565b81526020019081526020016000208160028110611435576114356137b9565b6007020160010154836040517f93df584c00000000000000000000000000000000000000000000000000000000815260040161147b929190918252602082015260400190565b60405180910390fd5b63ffffffff85166000908152600560205260408120818660018111156114ac576114ac613162565b60018111156114bd576114bd613162565b81526020019081526020016000206114d587876124bf565b63ffffffff16600281106114eb576114eb6137b9565b6007020190508281600101541461153e5760018101546040517f93df584c00000000000000000000000000000000000000000000000000000000815260048101919091526024810184905260440161147b565b6000600180830182905563ffffffff881682526007602052604082209091878381111561156d5761156d613162565b600181111561157e5761157e613162565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000811663ffffffff918216939093181691909117905582156115f85760405183907f0b31c0055e2d464bef7781994b98c4ff9ef4ae0d05f59feb6a68c42de5e201b890600090a25b60405184907ffc3e98dbbd47c3fa7c1c05b6ec711caeaf70eca4554192b9ada8fc11a37f298e90600090a2505050505050565b63ffffffff821660009081526005602052604081208183600181111561165357611653613162565b600181111561166457611664613162565b815260200190815260200160002061167c84846124bf565b63ffffffff1660028110611692576116926137b9565b6007020160010154905092915050565b6116aa612571565b806116e1576040517f0849d8cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116ed8484612516565b63ffffffff858116600090815260056020526040812092909116925083919085600181111561171e5761171e613162565b600181111561172f5761172f613162565b8152602001908152602001600020826002811061174e5761174e6137b9565b6007020160010154146117f95763ffffffff841660009081526005602052604081209084600181111561178357611783613162565b600181111561179457611794613162565b815260200190815260200160002081600281106117b3576117b36137b9565b6007020160010154826040517f93df584c00000000000000000000000000000000000000000000000000000000815260040161147b929190918252602082015260400190565b60405182907f53f5d9228f0a4173bea6e5931c9b3afe6eeb6692ede1d182952970f152534e3b90600090a263ffffffff841660009081526005602052604081209084600181111561184c5761184c613162565b600181111561185d5761185d613162565b8152602001908152602001600020816002811061187c5761187c6137b9565b600702016001016000905550505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015260640161147b565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b600061199660036125ac565b905090565b63ffffffff82166000908152600560205260408120818360018111156119c3576119c3613162565b60018111156119d4576119d4613162565b815260200190815260200160002061167c8484612516565b606060006119fa60036125ac565b90506000611a08848661386a565b9050831580611a175750818110155b15611a57576040805160008082526020820190925290611a4d565b611a3a612f47565b815260200190600190039081611a325790505b5092505050610422565b6000611a6385836138b0565b905082811115611a705750815b6000611a7c83836138c3565b67ffffffffffffffff811115611a9457611a94613881565b604051908082528060200260200182016040528015611acd57816020015b611aba612f47565b815260200190600190039081611ab25790505b509050825b82811015611c46576000611ae76003836125b6565b60408051808201825267ffffffffffffffff83168082526000908152600260209081529083902083518154608081850283018101909652606082018181529697509395928601949093919284929091849190840182828015611b6857602002820191906000526020600020905b815481526020019060010190808311611b54575b5050509183525050600182015460ff166020820152600282018054604090920191611b92906137e8565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbe906137e8565b8015611c0b5780601f10611be057610100808354040283529160200191611c0b565b820191906000526020600020905b815481529060010190602001808311611bee57829003601f168201915b50505091909252505050905283611c2287856138c3565b81518110611c3257611c326137b9565b602090810291909101015250600101611ad2565b509695505050505050565b6000611c5b612571565b611c6c611c6784613af1565b6125c9565b6000611c78868661199b565b9050828114611cbd576040517f93df584c000000000000000000000000000000000000000000000000000000008152600481018290526024810184905260440161147b565b8015611cef5760405183907f53f5d9228f0a4173bea6e5931c9b3afe6eeb6692ede1d182952970f152534e3b90600090a25b60068054600091908290611d089063ffffffff16613bed565b91906101000a81548163ffffffff021916908363ffffffff16021790559050611d52878787604051602001611d3d9190613ec9565b60405160208183030381529060405284612a37565b63ffffffff881660009081526005602052604081209194509081886001811115611d7e57611d7e613162565b6001811115611d8f57611d8f613162565b8152602001908152602001600020611da78989612516565b63ffffffff1660028110611dbd57611dbd6137b9565b600702016001810185905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff841617815590508560028201611e0782826143af565b905050837f94f085b7c57ec2a270befd0b7b2ec7452580040edee8bb0fb04609c81f0359c68388604051611e3c929190614576565b60405180910390a2505050949350505050565b611e57612af7565b611e6081612b78565b50565b611e6b612af7565b60005b8381101561205157611eb2858583818110611e8b57611e8b6137b9565b9050602002016020810190611ea0919061459d565b60039067ffffffffffffffff16612c6d565b611f1c57848482818110611ec857611ec86137b9565b9050602002016020810190611edd919061459d565b6040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260240161147b565b60026000868684818110611f3257611f326137b9565b9050602002016020810190611f47919061459d565b67ffffffffffffffff1681526020810191909152604001600090812090611f6e8282612f8a565b6001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611fa6600283016000612fa8565b5050611fe4858583818110611fbd57611fbd6137b9565b9050602002016020810190611fd2919061459d565b60039067ffffffffffffffff16612c85565b507f2a680691fef3b2d105196805935232c661ce703e92d464ef0b94a7bc62d714f0858583818110612018576120186137b9565b905060200201602081019061202d919061459d565b60405167ffffffffffffffff909116815260200160405180910390a1600101611e6e565b5060005b818110156121fb576000838383818110612071576120716137b9565b905060200281019061208391906145ba565b612091906020810190614112565b61209a906145ee565b905060008484848181106120b0576120b06137b9565b90506020028101906120c291906145ba565b6120d090602081019061459d565b90506120df8260000151612c91565b816020015160ff16600003612120576040517fa9b3766e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff81166000908152600260209081526040909120835180518593612150928492910190612fe2565b5060208201516001820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9092169190911790556040820151600282019061219d90826146c0565b506121b791506003905067ffffffffffffffff8316612d53565b507f05dd57854af2c291a94ea52e7c43d80bc3be7fa73022f98b735dea86642fa5e081836040516121e99291906147bc565b60405180910390a15050600101612055565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614612271576040517fac7a7efd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061228060048286886147df565b61228991614809565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbae4e0fa000000000000000000000000000000000000000000000000000000001480159061231f57507fffffffff0000000000000000000000000000000000000000000000000000000081167f7524051a0000000000000000000000000000000000000000000000000000000014155b801561236d57507fffffffff0000000000000000000000000000000000000000000000000000000081167f5a837f970000000000000000000000000000000000000000000000000000000014155b156123c8576040517f12ba286f0000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008216600482015260240161147b565b60006123d86024600487896147df565b8101906123e59190614851565b90508263ffffffff168114612436576040517f8a6e4ce800000000000000000000000000000000000000000000000000000000815263ffffffff80831660048301528416602482015260440161147b565b6000803073ffffffffffffffffffffffffffffffffffffffff16888860405161246092919061486a565b6000604051808303816000865af19150503d806000811461249d576040519150601f19603f3d011682016040523d82523d6000602084013e6124a2565b606091505b5091509150816124b3573d60208201fd5b50505050505050505050565b63ffffffff82166000908152600760205260408120818360018111156124e7576124e7613162565b60018111156124f8576124f8613162565b815260208101919091526040016000205463ffffffff169392505050565b63ffffffff821660009081526007602052604081208183600181111561253e5761253e613162565b600181111561254f5761254f613162565b815260208101919091526040016000205463ffffffff16600118905092915050565b3330146125aa576040517f371a732800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000610422825490565b60006125c28383612d5f565b9392505050565b806020015167ffffffffffffffff16600003612611576040517f698cf8e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008151600181111561262657612626613162565b14158015612647575060018151600181111561264457612644613162565b14155b1561267e576040517f3302dbd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515115806126bb575060408051600060208201520160405160208183030381529060405280519060200120816080015180519060200120145b156126f2576040517f358c192700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015151158061272f5750604080516000602082015201604051602081830303815290604052805190602001208160a0015180519060200120145b15612766576040517fdee9857400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516127819060039067ffffffffffffffff16612c6d565b6127c95760208101516040517f1bd4d2d200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff909116600482015260240161147b565b60408082015160208084015167ffffffffffffffff1660009081526002909152919091206001015460ff91821691168181111561283c576040517f2db22040000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161147b565b60c08301515161010081111561287e576040517f1b925da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61288983600361386a565b81116128c1576040517f4856694e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808267ffffffffffffffff8111156128dd576128dd613881565b604051908082528060200260200182016040528015612906578160200160208202803683370190505b50905060005b838110156129c65760008760c00151828151811061292c5761292c6137b9565b60200260200101519050806040015151600014612951578361294d8161487a565b9450505b602081015151158061296257508051155b1561299b57806040517f9fa4031400000000000000000000000000000000000000000000000000000000815260040161147b91906148b2565b80600001518383815181106129b2576129b26137b9565b60209081029190910101525060010161290c565b5060006129d485600361386a565b6129df9060016138b0565b905080831015612a25576040517f548dd21f000000000000000000000000000000000000000000000000000000008152600481018490526024810182905260440161147b565b612a2e82612c91565b50505050505050565b6040516000907dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90612a95907f45564d000000000000000000000000000000000000000000000000000000000090469030908a908a9089906020016148c5565b60408051601f1981840301815290829052612ab491869060200161491e565b60408051808303601f190181529190528051602090910120167e0a0000000000000000000000000000000000000000000000000000000000001795945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146125aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161147b565b3373ffffffffffffffffffffffffffffffffffffffff821603612bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161147b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600081815260018301602052604081205415156125c2565b60006125c28383612d89565b805115611e60576040517f05a5196600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906305a5196690612d0a90849060040161494d565b600060405180830381865afa158015612d27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d4f91908101906149ca565b5050565b60006125c28383612e7c565b6000826000018281548110612d7657612d766137b9565b9060005260206000200154905092915050565b60008181526001830160205260408120548015612e72576000612dad6001836138c3565b8554909150600090612dc1906001906138c3565b9050808214612e26576000866000018281548110612de157612de16137b9565b9060005260206000200154905080876000018481548110612e0457612e046137b9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e3757612e37614b26565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610422565b6000915050610422565b6000818152600183016020526040812054612ec357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610422565b506000610422565b6040805160608101825260008082526020820152908101612f426040805161010081019091528060008152602001600067ffffffffffffffff168152602001600060ff168152602001600067ffffffffffffffff168152602001606081526020016060815260200160608152602001606081525090565b905290565b6040518060400160405280600067ffffffffffffffff168152602001612f42604051806060016040528060608152602001600060ff168152602001606081525090565b5080546000825590600052602060002090810190611e60919061302d565b508054612fb4906137e8565b6000825580601f10612fc4575050565b601f016020900490600052602060002090810190611e60919061302d565b82805482825590600052602060002090810192821561301d579160200282015b8281111561301d578251825591602001919060010190613002565b5061302992915061302d565b5090565b5b80821115613029576000815560010161302e565b60006020828403121561305457600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146125c257600080fd5b60005b8381101561309f578181015183820152602001613087565b50506000910152565b600081518084526130c0816020860160208601613084565b601f01601f19169290920160200192915050565b6020815260006125c260208301846130a8565b63ffffffff81168114611e6057600080fd5b8035613104816130e7565b919050565b60028110611e6057600080fd5b803561310481613109565b60008060006060848603121561313657600080fd5b8335613141816130e7565b9250602084013561315181613109565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106131c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b8051825260006020820151606060208501526131eb60608501826130a8565b90506040830151848203604086015261320482826130a8565b95945050505050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561325a57601f198684030189526132488383516131cc565b9884019892509083019060010161322c565b5090979650505050505050565b63ffffffff8151168252602081015160208301526000604082015160606040850152613297606085018251613191565b602081015167ffffffffffffffff8116608086015250604081015160ff811660a086015250606081015167ffffffffffffffff811660c08601525060808101516101008060e08701526132ee6101608701836130a8565b915060a08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa080888503018389015261332984836130a8565b935060c085015192508088850301610120890152613347848461320d565b935060e08501519450808885030161014089015250505061320481836130a8565b60408152600061337b6040830185613267565b905082151560208301529392505050565b6000806040838503121561339f57600080fd5b82356133aa816130e7565b915060208301356133ba81613109565b809150509250929050565b6040815260006133d86040830185613267565b82810360208401526132048185613267565b6000806000806080858703121561340057600080fd5b843561340b816130e7565b9350602085013561341b81613109565b93969395505050506040820135916060013590565b60006020828403121561344257600080fd5b81356125c2816130e7565b6000806040838503121561346057600080fd5b50508035926020909101359150565b60008151808452602080850194506020840160005b838110156134a057815187529582019590820190600101613484565b509495945050505050565b60008151606084526134c0606085018261346f565b905060ff60208401511660208501526040830151848203604086015261320482826130a8565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015613576578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805167ffffffffffffffff168452870151878401879052613563878501826134ab565b958801959350509086019060010161350f565b509098975050505050505050565b6000806000806080858703121561359a57600080fd5b84356135a5816130e7565b935060208501356135b581613109565b9250604085013567ffffffffffffffff8111156135d157600080fd5b850161010081880312156135e457600080fd5b9396929550929360600135925050565b60006020828403121561360657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146125c257600080fd5b60008083601f84011261363c57600080fd5b50813567ffffffffffffffff81111561365457600080fd5b6020830191508360208260051b850101111561121b57600080fd5b6000806000806040858703121561368557600080fd5b843567ffffffffffffffff8082111561369d57600080fd5b6136a98883890161362a565b909650945060208701359150808211156136c257600080fd5b506136cf8782880161362a565b95989497509550505050565b67ffffffffffffffff81168114611e6057600080fd5b8035613104816136db565b6000806000806000806080878903121561371557600080fd5b863567ffffffffffffffff8082111561372d57600080fd5b6137398a838b0161362a565b9098509650602089013591508082111561375257600080fd5b818901915089601f83011261376657600080fd5b81358181111561377557600080fd5b8a602082850101111561378757600080fd5b60208301965080955050505061379f604088016136f1565b91506137ad606088016130f9565b90509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806137fc57607f821691505b602082108103613835577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176104225761042261383b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b808201808211156104225761042261383b565b818103818111156104225761042261383b565b6040516060810167ffffffffffffffff811182821017156138f9576138f9613881565b60405290565b604051610100810167ffffffffffffffff811182821017156138f9576138f9613881565b604051601f8201601f1916810167ffffffffffffffff8111828210171561394c5761394c613881565b604052919050565b60ff81168114611e6057600080fd5b803561310481613954565b600082601f83011261397f57600080fd5b813567ffffffffffffffff81111561399957613999613881565b6139ac6020601f19601f84011601613923565b8181528460208386010111156139c157600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff8211156139f8576139f8613881565b5060051b60200190565b600082601f830112613a1357600080fd5b81356020613a28613a23836139de565b613923565b82815260059290921b84018101918181019086841115613a4757600080fd5b8286015b84811015611c4657803567ffffffffffffffff80821115613a6c5760008081fd5b8189019150606080601f19848d03011215613a875760008081fd5b613a8f6138d6565b87840135815260408085013584811115613aa95760008081fd5b613ab78e8b8389010161396e565b838b015250918401359183831115613acf5760008081fd5b613add8d8a8588010161396e565b908201528652505050918301918301613a4b565b60006101008236031215613b0457600080fd5b613b0c6138ff565b613b1583613116565b8152613b23602084016136f1565b6020820152613b3460408401613963565b6040820152613b45606084016136f1565b6060820152608083013567ffffffffffffffff80821115613b6557600080fd5b613b713683870161396e565b608084015260a0850135915080821115613b8a57600080fd5b613b963683870161396e565b60a084015260c0850135915080821115613baf57600080fd5b613bbb36838701613a02565b60c084015260e0850135915080821115613bd457600080fd5b50613be13682860161396e565b60e08301525092915050565b600063ffffffff808316818103613c0657613c0661383b565b6001019392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c4557600080fd5b830160208101925035905067ffffffffffffffff811115613c6557600080fd5b80360382131561121b57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cd457600080fd5b830160208101925035905067ffffffffffffffff811115613cf457600080fd5b8060051b360382131561121b57600080fd5b60008383855260208086019550808560051b830101846000805b88811015613dc457601f19868503018a5282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1893603018112613d62578283fd5b8801803585526060613d7687830183613c10565b8289890152613d888389018284613c74565b925050506040613d9a81840184613c10565b935087830382890152613dae838583613c74565b9d89019d97505050938601935050600101613d20565b509198975050505050505050565b6000610100613de984613de485613116565b613191565b613df5602084016136f1565b67ffffffffffffffff166020850152613e1060408401613963565b60ff166040850152613e24606084016136f1565b67ffffffffffffffff166060850152613e406080840184613c10565b826080870152613e538387018284613c74565b92505050613e6460a0840184613c10565b85830360a0870152613e77838284613c74565b92505050613e8860c0840184613c9f565b85830360c0870152613e9b838284613d06565b92505050613eac60e0840184613c10565b85830360e0870152613ebf838284613c74565b9695505050505050565b6020815260006125c26020830184613dd2565b60008135610422816136db565b6000813561042281613954565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f2b57600080fd5b83018035915067ffffffffffffffff821115613f4657600080fd5b60200191503681900382131561121b57600080fd5b5b81811015612d4f5760008155600101613f5c565b601f821115613fa957806000526020600020601f840160051c81016020851015613f975750805b6121fb601f850160051c830182613f5b565b505050565b67ffffffffffffffff831115613fc657613fc6613881565b613fda83613fd483546137e8565b83613f70565b6000601f84116001811461402c5760008515613ff65750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556121fb565b600083815260209020601f19861690835b8281101561405d578685013582556020948501946001909201910161403d565b5086821015614098577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126140df57600080fd5b83018035915067ffffffffffffffff8211156140fa57600080fd5b6020019150600581901b360382131561121b57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261414657600080fd5b9190910192915050565b61415a81546137e8565b8015612d4f57601f81116001811461417457505060009055565b826000526020600020614192601f840160051c820160018301613f5b565b60008085559055505050565b81358155600180820160206141b66020860186613ef6565b67ffffffffffffffff8111156141ce576141ce613881565b6141e2816141dc86546137e8565b86613f70565b6000601f82116001811461423457600083156141fe5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1786556142a9565b600086815260209020601f19841690835b828110156142625786850135825593870193908901908701614245565b508482101561429d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c19848701351681555b505060018360011b0186555b505050505050506142bd6040830183613ef6565b6142cb818360028601613fae565b50505050565b680100000000000000008311156142ea576142ea613881565b8054838255808410156143695760038160030260038104831461430f5761430f61383b565b856003026003810487146143255761432561383b565b6000858152602081209283019291909101905b828210156143645780825561434f60018301614150565b61435b60028301614150565b90830190614338565b505050505b5060008181526020812083915b858110156143a75761439161438b8487614112565b8361419e565b6020929092019160039190910190600101614376565b505050505050565b81356143ba81613109565b600281106143f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541660ff821681178355505061446861442e60208401613edc565b82547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff1660089190911b68ffffffffffffffff0016178255565b6144b261447760408401613ee9565b82547fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff1660489190911b69ff00000000000000000016178255565b6145046144c160608401613edc565b82547fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff1660509190911b71ffffffffffffffff0000000000000000000016178255565b6145116080830183613ef6565b61451f818360018601613fae565b505061452e60a0830183613ef6565b61453c818360028601613fae565b505061454b60c08301836140aa565b6145598183600386016142d1565b505061456860e0830183613ef6565b6142cb818360048601613fae565b63ffffffff831681526040602082015260006145956040830184613dd2565b949350505050565b6000602082840312156145af57600080fd5b81356125c2816136db565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261414657600080fd5b60006060823603121561460057600080fd5b6146086138d6565b823567ffffffffffffffff8082111561462057600080fd5b9084019036601f83011261463357600080fd5b81356020614643613a23836139de565b82815260059290921b8401810191818101903684111561466257600080fd5b948201945b8386101561468057853582529482019490820190614667565b86525061468e878201613963565b908501525060408501359150808211156146a757600080fd5b506146b43682860161396e565b60408301525092915050565b815167ffffffffffffffff8111156146da576146da613881565b6146ee816146e884546137e8565b84613f70565b602080601f831160018114614741576000841561470b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556143a7565b600085815260208120601f198616915b8281101561477057888601518255948401946001909101908401614751565b50858210156147ac57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff8316815260406020820152600061459560408301846134ab565b600080858511156147ef57600080fd5b838611156147fc57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156148495780818660040360031b1b83161692505b505092915050565b60006020828403121561486357600080fd5b5035919050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148ab576148ab61383b565b5060010190565b6020815260006125c260208301846131cc565b8681526020810186905273ffffffffffffffffffffffffffffffffffffffff8516604082015263ffffffff848116606083015260c082019061490a6080840186613191565b80841660a084015250979650505050505050565b60008351614930818460208801613084565b835190830190614944818360208801613084565b01949350505050565b6020815260006125c2602083018461346f565b8051613104816130e7565b600082601f83011261497c57600080fd5b8151602061498c613a23836139de565b8083825260208201915060208460051b8701019350868411156149ae57600080fd5b602086015b84811015611c4657805183529183019183016149b3565b600060208083850312156149dd57600080fd5b825167ffffffffffffffff808211156149f557600080fd5b818501915085601f830112614a0957600080fd5b8151614a17613a23826139de565b81815260059190911b83018401908481019088831115614a3657600080fd5b8585015b83811015614b1957805185811115614a5157600080fd5b8601610100818c03601f1901811315614a6957600080fd5b614a716138ff565b614a7c8a8401614960565b8152614a8a60408401614960565b8a820152614a9a60608401614960565b60408201526080830151606082015260a0830151608082015260c083015160a082015260e08084015189811115614ad15760008081fd5b614adf8f8d8388010161496b565b60c084015250918301519188831115614af85760008081fd5b614b068e8c8587010161496b565b9082015285525050918601918601614a3a565b5098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", } var CCIPHomeABI = CCIPHomeMetaData.ABI diff --git a/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go b/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go index c8fbeb1cecc..136ca503a71 100644 --- a/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go +++ b/core/gethwrappers/ccip/generated/rmn_remote/rmn_remote.go @@ -56,7 +56,7 @@ type RMNRemoteSigner struct { var RMNRemoteMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"localChainSelector\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"AlreadyCursed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateOnchainPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignerOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"NotCursed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfOrderSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ThresholdNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"f\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structRMNRemote.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"Cursed\",\"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\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"Uncursed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"curse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"curse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCursedSubjects\",\"outputs\":[{\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLocalChainSelector\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"localChainSelector\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReportDigestHeader\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"digestHeader\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersionedConfig\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"version\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"f\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"isCursed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isCursed\",\"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\":\"rmnHomeContractConfigDigest\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"onchainPublicKey\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"nodeIndex\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Signer[]\",\"name\":\"signers\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"f\",\"type\":\"uint64\"}],\"internalType\":\"structRMNRemote.Config\",\"name\":\"newConfig\",\"type\":\"tuple\"}],\"name\":\"setConfig\",\"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\":[{\"internalType\":\"bytes16\",\"name\":\"subject\",\"type\":\"bytes16\"}],\"name\":\"uncurse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16[]\",\"name\":\"subjects\",\"type\":\"bytes16[]\"}],\"name\":\"uncurse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offrampAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"onRampAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"minSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxSeqNr\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structInternal.MerkleRoot[]\",\"name\":\"merkleRoots\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structIRMNRemote.Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620021ba380380620021ba8339810160408190526200003491620001a9565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000fe565b505050806001600160401b0316600003620000ec5760405163273e150360e21b815260040160405180910390fd5b6001600160401b0316608052620001db565b336001600160a01b03821603620001585760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001bc57600080fd5b81516001600160401b0381168114620001d457600080fd5b9392505050565b608051611fbc620001fe6000396000818161027a01526109f40152611fbc6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a9089e11610097578063d881e09211610066578063d881e09214610257578063eaa83ddd1461026c578063f2fde38b146102a4578063f8bb876e146102b757600080fd5b806370a9089e1461020157806379ba5097146102145780638da5cb5b1461021c5780639a19b3291461024457600080fd5b8063397796f7116100d3578063397796f7146101a557806362eed415146101ad5780636509a954146101c05780636d2d3993146101ee57600080fd5b8063181f5a7714610105578063198f0f77146101575780631add205f1461016c5780632cbc26bb14610182575b600080fd5b6101416040518060400160405280601381526020017f524d4e52656d6f746520312e362e302d6465760000000000000000000000000081525081565b60405161014e91906113dd565b60405180910390f35b61016a6101653660046113f0565b6102ca565b005b61017461068c565b60405161014e92919061142b565b610195610190366004611509565b610784565b604051901515815260200161014e565b6101956107e1565b61016a6101bb366004611509565b61085b565b6040517f9651943783dbf81935a60e98f218a9d9b5b28823fb2228bbd91320d632facf53815260200161014e565b61016a6101fc366004611509565b6108cf565b61016a61020f366004611592565b61093f565b61016a610c9a565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b61016a610252366004611711565b610d9c565b61025f610e99565b60405161014e91906117ae565b60405167ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014e565b61016a6102b2366004611814565b610ea5565b61016a6102c5366004611711565b610eb9565b6102d2610fab565b60015b6102e26020830183611831565b90508110156103b2576102f86020830183611831565b8281811061030857610308611899565b905060400201602001602081019061032091906118e9565b67ffffffffffffffff166103376020840184611831565b610342600185611935565b81811061035157610351611899565b905060400201602001602081019061036991906118e9565b67ffffffffffffffff16106103aa576040517f4485151700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016102d5565b506103c360608201604083016118e9565b6103ce906002611948565b6103d9906001611974565b67ffffffffffffffff166103f06020830183611831565b9050101561042a576040517f014c502000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003545b80156104bc57600860006003610445600185611935565b8154811061045557610455611899565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556104b581611995565b905061042e565b5060005b6104cd6020830183611831565b905081101561060257600860006104e76020850185611831565b848181106104f7576104f7611899565b61050d9260206040909202019081019150611814565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff161561056e576040517f28cae27d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600860006105816020860186611831565b8581811061059157610591611899565b6105a79260206040909202019081019150611814565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016104c0565b508060026106108282611a83565b50506005805460009190829061062b9063ffffffff16611bbe565b91906101000a81548163ffffffff021916908363ffffffff160217905590508063ffffffff167f7f22bf988149dbe8de8fb879c6b97a4e56e68b2bd57421ce1a4e79d4ef6b496c836040516106809190611be1565b60405180910390a25050565b6040805160608082018352600080835260208301919091529181018290526005546040805160608101825260028054825260038054845160208281028201810190965281815263ffffffff9096169592948593818601939092909160009084015b8282101561075b576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16818301528252600190920191016106ed565b505050908252506002919091015467ffffffffffffffff16602090910152919491935090915050565b6000610790600661102e565b60000361079f57506000919050565b6107aa600683611038565b806107db57506107db60067f0100000000000000000000000000000100000000000000000000000000000000611038565b92915050565b60006107ed600661102e565b6000036107fa5750600090565b61082560067f0100000000000000000000000000000000000000000000000000000000000000611038565b80610856575061085660067f0100000000000000000000000000000100000000000000000000000000000000611038565b905090565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061089157610891611899565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216602092830291909101909101526108cb81610eb9565b5050565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061090557610905611899565b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216602092830291909101909101526108cb81610d9c565b60055463ffffffff16600003610981576040517face124bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004546109999067ffffffffffffffff166001611974565b67ffffffffffffffff168110156109dc576040517f59fa4a9300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825246815267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166020820152309181019190915273ffffffffffffffffffffffffffffffffffffffff8616606082015260025460808201526000907f9651943783dbf81935a60e98f218a9d9b5b28823fb2228bbd91320d632facf539060a08101610a788789611ceb565b9052604051610a8b929190602001611e4b565b60405160208183030381529060405280519060200120905060008060005b84811015610c8f57600184601b888885818110610ac857610ac8611899565b90506040020160000135898986818110610ae457610ae4611899565b9050604002016020013560405160008152602001604052604051610b24949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610b46573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015192505073ffffffffffffffffffffffffffffffffffffffff8216610bbe576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610610c23576040517fbbe15e7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604090205460ff16610c82576040517faaaa914100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9091508190600101610aa9565b505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610da4610fab565b60005b8151811015610e5e57610ddd828281518110610dc557610dc5611899565b6020026020010151600661107690919063ffffffff16565b610e5657818181518110610df357610df3611899565b60200260200101516040517f73281fa1000000000000000000000000000000000000000000000000000000008152600401610d1791907fffffffffffffffffffffffffffffffff0000000000000000000000000000000091909116815260200190565b600101610da7565b507f0676e709c9cc74fa0519fd78f7c33be0f1b2b0bae0507c724aef7229379c6ba181604051610e8e91906117ae565b60405180910390a150565b606061085660066110a4565b610ead610fab565b610eb6816110b1565b50565b610ec1610fab565b60005b8151811015610f7b57610efa828281518110610ee257610ee2611899565b602002602001015160066111a690919063ffffffff16565b610f7357818181518110610f1057610f10611899565b60200260200101516040517f19d5c79b000000000000000000000000000000000000000000000000000000008152600401610d1791907fffffffffffffffffffffffffffffffff0000000000000000000000000000000091909116815260200190565b600101610ec4565b507f1716e663a90a76d3b6c7e5f680673d1b051454c19c627e184c8daf28f3104f7481604051610e8e91906117ae565b60005473ffffffffffffffffffffffffffffffffffffffff16331461102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610d17565b565b60006107db825490565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008116600090815260018301602052604081205415155b9392505050565b600061106f837fffffffffffffffffffffffffffffffff0000000000000000000000000000000084166111d4565b6060600061106f836112ce565b3373ffffffffffffffffffffffffffffffffffffffff821603611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610d17565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600061106f837fffffffffffffffffffffffffffffffff00000000000000000000000000000000841661132a565b600081815260018301602052604081205480156112bd5760006111f8600183611935565b855490915060009061120c90600190611935565b905080821461127157600086600001828154811061122c5761122c611899565b906000526020600020015490508087600001848154811061124f5761124f611899565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061128257611282611f80565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107db565b60009150506107db565b5092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561131e57602002820191906000526020600020905b81548152602001906001019080831161130a575b50505050509050919050565b6000818152600183016020526040812054611371575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107db565b5060006107db565b6000815180845260005b8181101561139f57602081850181015186830182015201611383565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061106f6020830184611379565b60006020828403121561140257600080fd5b813567ffffffffffffffff81111561141957600080fd5b82016060818503121561106f57600080fd5b63ffffffff831681526040602080830182905283518383015283810151606080850152805160a085018190526000939291820190849060c08701905b808310156114b0578351805173ffffffffffffffffffffffffffffffffffffffff16835285015167ffffffffffffffff1685830152928401926001929092019190850190611467565b50604088015167ffffffffffffffff81166080890152945098975050505050505050565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461150457600080fd5b919050565b60006020828403121561151b57600080fd5b61106f826114d4565b73ffffffffffffffffffffffffffffffffffffffff81168114610eb657600080fd5b60008083601f84011261155857600080fd5b50813567ffffffffffffffff81111561157057600080fd5b6020830191508360208260061b850101111561158b57600080fd5b9250929050565b6000806000806000606086880312156115aa57600080fd5b85356115b581611524565b9450602086013567ffffffffffffffff808211156115d257600080fd5b818801915088601f8301126115e657600080fd5b8135818111156115f557600080fd5b8960208260051b850101111561160a57600080fd5b60208301965080955050604088013591508082111561162857600080fd5b5061163588828901611546565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561169857611698611646565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116e5576116e5611646565b604052919050565b600067ffffffffffffffff82111561170757611707611646565b5060051b60200190565b6000602080838503121561172457600080fd5b823567ffffffffffffffff81111561173b57600080fd5b8301601f8101851361174c57600080fd5b803561175f61175a826116ed565b61169e565b81815260059190911b8201830190838101908783111561177e57600080fd5b928401925b828410156117a357611794846114d4565b82529284019290840190611783565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156118085783517fffffffffffffffffffffffffffffffff0000000000000000000000000000000016835292840192918401916001016117ca565b50909695505050505050565b60006020828403121561182657600080fd5b813561106f81611524565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261186657600080fd5b83018035915067ffffffffffffffff82111561188157600080fd5b6020019150600681901b360382131561158b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b67ffffffffffffffff81168114610eb657600080fd5b8035611504816118c8565b6000602082840312156118fb57600080fd5b813561106f816118c8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156107db576107db611906565b67ffffffffffffffff81811683821602808216919082811461196c5761196c611906565b505092915050565b67ffffffffffffffff8181168382160190808211156112c7576112c7611906565b6000816119a4576119a4611906565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600081356107db816118c8565b81356119e281611524565b73ffffffffffffffffffffffffffffffffffffffff811690508154817fffffffffffffffffffffffff000000000000000000000000000000000000000082161783556020840135611a32816118c8565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b16837fffffffff000000000000000000000000000000000000000000000000000000008416171784555050505050565b81358155600180820160208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018112611ac157600080fd5b8401803567ffffffffffffffff811115611ada57600080fd5b6020820191508060061b3603821315611af257600080fd5b68010000000000000000811115611b0b57611b0b611646565b825481845580821015611b40576000848152602081208381019083015b80821015611b3c5782825590870190611b28565b5050505b50600092835260208320925b81811015611b7057611b5e83856119d7565b92840192604092909201918401611b4c565b50505050506108cb611b84604084016119ca565b6002830167ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161781555050565b600063ffffffff808316818103611bd757611bd7611906565b6001019392505050565b6000602080835260808301843582850152818501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611c2657600080fd5b8501828101903567ffffffffffffffff80821115611c4357600080fd5b8160061b3603831315611c5557600080fd5b6040606060408901528483865260a089019050849550600094505b83851015611cc0578535611c8381611524565b73ffffffffffffffffffffffffffffffffffffffff16815285870135611ca8816118c8565b83168188015294810194600194909401938101611c70565b611ccc60408b016118de565b67ffffffffffffffff811660608b015296509998505050505050505050565b6000611cf961175a846116ed565b80848252602080830192508560051b850136811115611d1757600080fd5b855b81811015611e3f57803567ffffffffffffffff80821115611d3a5760008081fd5b818901915060a08236031215611d505760008081fd5b611d58611675565b8235611d63816118c8565b81528286013582811115611d775760008081fd5b8301601f3681830112611d8a5760008081fd5b813584811115611d9c57611d9c611646565b611dcb897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848401160161169e565b94508085523689828501011115611de457600091508182fd5b808984018a8701376000898287010152505050818682015260409150611e0b8284016118de565b8282015260609150611e1e8284016118de565b91810191909152608091820135918101919091528552938201938201611d19565b50919695505050505050565b60006040848352602060408185015261010084018551604086015281860151606067ffffffffffffffff808316606089015260408901519250608073ffffffffffffffffffffffffffffffffffffffff80851660808b015260608b0151945060a081861660a08c015260808c015160c08c015260a08c0151955060c060e08c015286915085518088526101209750878c019250878160051b8d01019750888701965060005b81811015611f6d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee08d8a030184528751868151168a528a810151848c8c0152611f3c858c0182611379565b828e015189168c8f01528983015189168a8d0152918701519a87019a909a5298509689019692890192600101611ef0565b50969d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", + Bin: "0x60a06040523480156200001157600080fd5b50604051620021f2380380620021f28339810160408190526200003491620001a9565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000fe565b505050806001600160401b0316600003620000ec5760405163273e150360e21b815260040160405180910390fd5b6001600160401b0316608052620001db565b336001600160a01b03821603620001585760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600060208284031215620001bc57600080fd5b81516001600160401b0381168114620001d457600080fd5b9392505050565b608051611ff4620001fe6000396000818161027a0152610a2c0152611ff46000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a9089e11610097578063d881e09211610066578063d881e09214610257578063eaa83ddd1461026c578063f2fde38b146102a4578063f8bb876e146102b757600080fd5b806370a9089e1461020157806379ba5097146102145780638da5cb5b1461021c5780639a19b3291461024457600080fd5b8063397796f7116100d3578063397796f7146101a557806362eed415146101ad5780636509a954146101c05780636d2d3993146101ee57600080fd5b8063181f5a7714610105578063198f0f77146101575780631add205f1461016c5780632cbc26bb14610182575b600080fd5b6101416040518060400160405280601381526020017f524d4e52656d6f746520312e362e302d6465760000000000000000000000000081525081565b60405161014e9190611415565b60405180910390f35b61016a610165366004611428565b6102ca565b005b6101746106c4565b60405161014e929190611463565b610195610190366004611541565b6107bc565b604051901515815260200161014e565b610195610819565b61016a6101bb366004611541565b610893565b6040517f9651943783dbf81935a60e98f218a9d9b5b28823fb2228bbd91320d632facf53815260200161014e565b61016a6101fc366004611541565b610907565b61016a61020f3660046115ca565b610977565b61016a610cd2565b60005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b61016a610252366004611749565b610dd4565b61025f610ed1565b60405161014e91906117e6565b60405167ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014e565b61016a6102b236600461184c565b610edd565b61016a6102c5366004611749565b610ef1565b6102d2610fe3565b803561030a576040517f9cf8540c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015b61031a6020830183611869565b90508110156103ea576103306020830183611869565b82818110610340576103406118d1565b90506040020160200160208101906103589190611921565b67ffffffffffffffff1661036f6020840184611869565b61037a60018561196d565b818110610389576103896118d1565b90506040020160200160208101906103a19190611921565b67ffffffffffffffff16106103e2576040517f4485151700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161030d565b506103fb6060820160408301611921565b610406906002611980565b6104119060016119ac565b67ffffffffffffffff166104286020830183611869565b90501015610462576040517f014c502000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003545b80156104f45760086000600361047d60018561196d565b8154811061048d5761048d6118d1565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556104ed816119cd565b9050610466565b5060005b6105056020830183611869565b905081101561063a576008600061051f6020850185611869565b8481811061052f5761052f6118d1565b610545926020604090920201908101915061184c565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156105a6576040517f28cae27d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600860006105b96020860186611869565b858181106105c9576105c96118d1565b6105df926020604090920201908101915061184c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016104f8565b508060026106488282611abb565b5050600580546000919082906106639063ffffffff16611bf6565b91906101000a81548163ffffffff021916908363ffffffff160217905590508063ffffffff167f7f22bf988149dbe8de8fb879c6b97a4e56e68b2bd57421ce1a4e79d4ef6b496c836040516106b89190611c19565b60405180910390a25050565b6040805160608082018352600080835260208301919091529181018290526005546040805160608101825260028054825260038054845160208281028201810190965281815263ffffffff9096169592948593818601939092909160009084015b82821015610793576000848152602090819020604080518082019091529084015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff1681830152825260019092019101610725565b505050908252506002919091015467ffffffffffffffff16602090910152919491935090915050565b60006107c86006611066565b6000036107d757506000919050565b6107e2600683611070565b80610813575061081360067f0100000000000000000000000000000100000000000000000000000000000000611070565b92915050565b60006108256006611066565b6000036108325750600090565b61085d60067f0100000000000000000000000000000000000000000000000000000000000000611070565b8061088e575061088e60067f0100000000000000000000000000000100000000000000000000000000000000611070565b905090565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106108c9576108c96118d1565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166020928302919091019091015261090381610ef1565b5050565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061093d5761093d6118d1565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166020928302919091019091015261090381610dd4565b60055463ffffffff166000036109b9576040517face124bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004546109d19067ffffffffffffffff1660016119ac565b67ffffffffffffffff16811015610a14576040517f59fa4a9300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825246815267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166020820152309181019190915273ffffffffffffffffffffffffffffffffffffffff8616606082015260025460808201526000907f9651943783dbf81935a60e98f218a9d9b5b28823fb2228bbd91320d632facf539060a08101610ab08789611d23565b9052604051610ac3929190602001611e83565b60405160208183030381529060405280519060200120905060008060005b84811015610cc757600184601b888885818110610b0057610b006118d1565b90506040020160000135898986818110610b1c57610b1c6118d1565b9050604002016020013560405160008152602001604052604051610b5c949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610b7e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015192505073ffffffffffffffffffffffffffffffffffffffff8216610bf6576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610610c5b576040517fbbe15e7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604090205460ff16610cba576040517faaaa914100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9091508190600101610ae1565b505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610ddc610fe3565b60005b8151811015610e9657610e15828281518110610dfd57610dfd6118d1565b602002602001015160066110ae90919063ffffffff16565b610e8e57818181518110610e2b57610e2b6118d1565b60200260200101516040517f73281fa1000000000000000000000000000000000000000000000000000000008152600401610d4f91907fffffffffffffffffffffffffffffffff0000000000000000000000000000000091909116815260200190565b600101610ddf565b507f0676e709c9cc74fa0519fd78f7c33be0f1b2b0bae0507c724aef7229379c6ba181604051610ec691906117e6565b60405180910390a150565b606061088e60066110dc565b610ee5610fe3565b610eee816110e9565b50565b610ef9610fe3565b60005b8151811015610fb357610f32828281518110610f1a57610f1a6118d1565b602002602001015160066111de90919063ffffffff16565b610fab57818181518110610f4857610f486118d1565b60200260200101516040517f19d5c79b000000000000000000000000000000000000000000000000000000008152600401610d4f91907fffffffffffffffffffffffffffffffff0000000000000000000000000000000091909116815260200190565b600101610efc565b507f1716e663a90a76d3b6c7e5f680673d1b051454c19c627e184c8daf28f3104f7481604051610ec691906117e6565b60005473ffffffffffffffffffffffffffffffffffffffff163314611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610d4f565b565b6000610813825490565b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008116600090815260018301602052604081205415155b9392505050565b60006110a7837fffffffffffffffffffffffffffffffff00000000000000000000000000000000841661120c565b606060006110a783611306565b3373ffffffffffffffffffffffffffffffffffffffff821603611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610d4f565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006110a7837fffffffffffffffffffffffffffffffff000000000000000000000000000000008416611362565b600081815260018301602052604081205480156112f557600061123060018361196d565b85549091506000906112449060019061196d565b90508082146112a9576000866000018281548110611264576112646118d1565b9060005260206000200154905080876000018481548110611287576112876118d1565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806112ba576112ba611fb8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610813565b6000915050610813565b5092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b815481526020019060010190808311611342575b50505050509050919050565b60008181526001830160205260408120546113a957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610813565b506000610813565b6000815180845260005b818110156113d7576020818501810151868301820152016113bb565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006110a760208301846113b1565b60006020828403121561143a57600080fd5b813567ffffffffffffffff81111561145157600080fd5b8201606081850312156110a757600080fd5b63ffffffff831681526040602080830182905283518383015283810151606080850152805160a085018190526000939291820190849060c08701905b808310156114e8578351805173ffffffffffffffffffffffffffffffffffffffff16835285015167ffffffffffffffff168583015292840192600192909201919085019061149f565b50604088015167ffffffffffffffff81166080890152945098975050505050505050565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461153c57600080fd5b919050565b60006020828403121561155357600080fd5b6110a78261150c565b73ffffffffffffffffffffffffffffffffffffffff81168114610eee57600080fd5b60008083601f84011261159057600080fd5b50813567ffffffffffffffff8111156115a857600080fd5b6020830191508360208260061b85010111156115c357600080fd5b9250929050565b6000806000806000606086880312156115e257600080fd5b85356115ed8161155c565b9450602086013567ffffffffffffffff8082111561160a57600080fd5b818801915088601f83011261161e57600080fd5b81358181111561162d57600080fd5b8960208260051b850101111561164257600080fd5b60208301965080955050604088013591508082111561166057600080fd5b5061166d8882890161157e565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156116d0576116d061167e565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561171d5761171d61167e565b604052919050565b600067ffffffffffffffff82111561173f5761173f61167e565b5060051b60200190565b6000602080838503121561175c57600080fd5b823567ffffffffffffffff81111561177357600080fd5b8301601f8101851361178457600080fd5b803561179761179282611725565b6116d6565b81815260059190911b820183019083810190878311156117b657600080fd5b928401925b828410156117db576117cc8461150c565b825292840192908401906117bb565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156118405783517fffffffffffffffffffffffffffffffff000000000000000000000000000000001683529284019291840191600101611802565b50909695505050505050565b60006020828403121561185e57600080fd5b81356110a78161155c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261189e57600080fd5b83018035915067ffffffffffffffff8211156118b957600080fd5b6020019150600681901b36038213156115c357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b67ffffffffffffffff81168114610eee57600080fd5b803561153c81611900565b60006020828403121561193357600080fd5b81356110a781611900565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156108135761081361193e565b67ffffffffffffffff8181168382160280821691908281146119a4576119a461193e565b505092915050565b67ffffffffffffffff8181168382160190808211156112ff576112ff61193e565b6000816119dc576119dc61193e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000813561081381611900565b8135611a1a8161155c565b73ffffffffffffffffffffffffffffffffffffffff811690508154817fffffffffffffffffffffffff000000000000000000000000000000000000000082161783556020840135611a6a81611900565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b16837fffffffff000000000000000000000000000000000000000000000000000000008416171784555050505050565b81358155600180820160208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018112611af957600080fd5b8401803567ffffffffffffffff811115611b1257600080fd5b6020820191508060061b3603821315611b2a57600080fd5b68010000000000000000811115611b4357611b4361167e565b825481845580821015611b78576000848152602081208381019083015b80821015611b745782825590870190611b60565b5050505b50600092835260208320925b81811015611ba857611b968385611a0f565b92840192604092909201918401611b84565b5050505050610903611bbc60408401611a02565b6002830167ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161781555050565b600063ffffffff808316818103611c0f57611c0f61193e565b6001019392505050565b6000602080835260808301843582850152818501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611c5e57600080fd5b8501828101903567ffffffffffffffff80821115611c7b57600080fd5b8160061b3603831315611c8d57600080fd5b6040606060408901528483865260a089019050849550600094505b83851015611cf8578535611cbb8161155c565b73ffffffffffffffffffffffffffffffffffffffff16815285870135611ce081611900565b83168188015294810194600194909401938101611ca8565b611d0460408b01611916565b67ffffffffffffffff811660608b015296509998505050505050505050565b6000611d3161179284611725565b80848252602080830192508560051b850136811115611d4f57600080fd5b855b81811015611e7757803567ffffffffffffffff80821115611d725760008081fd5b818901915060a08236031215611d885760008081fd5b611d906116ad565b8235611d9b81611900565b81528286013582811115611daf5760008081fd5b8301601f3681830112611dc25760008081fd5b813584811115611dd457611dd461167e565b611e03897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084840116016116d6565b94508085523689828501011115611e1c57600091508182fd5b808984018a8701376000898287010152505050818682015260409150611e43828401611916565b8282015260609150611e56828401611916565b91810191909152608091820135918101919091528552938201938201611d51565b50919695505050505050565b60006040848352602060408185015261010084018551604086015281860151606067ffffffffffffffff808316606089015260408901519250608073ffffffffffffffffffffffffffffffffffffffff80851660808b015260608b0151945060a081861660a08c015260808c015160c08c015260a08c0151955060c060e08c015286915085518088526101209750878c019250878160051b8d01019750888701965060005b81811015611fa5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee08d8a030184528751868151168a528a810151848c8c0152611f74858c01826113b1565b828e015189168c8f01528983015189168a8d0152918701519a87019a909a5298509689019692890192600101611f28565b50969d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", } var RMNRemoteABI = RMNRemoteMetaData.ABI 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 38bbdf130b4..9f59c471bac 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 @@ -3,7 +3,7 @@ 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 3e8e3358f0bb520af069a7d37ea625940a88461a54418b1d5925eabced8c74df burn_with_from_mint_token_pool: ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.abi ../../../contracts/solc/v0.8.24/BurnWithFromMintTokenPool/BurnWithFromMintTokenPool.bin 734c2a0ea8f1224b5f01ed849410209e74b4e3427e8bfddb8ff5dd8ead5f2d8d ccip_encoding_utils: ../../../contracts/solc/v0.8.24/ICCIPEncodingUtils/ICCIPEncodingUtils.abi ../../../contracts/solc/v0.8.24/ICCIPEncodingUtils/ICCIPEncodingUtils.bin 9971fc93c34442a0989570d3dab90a125de31e6e60754ad972807ce6ad4dfba0 -ccip_home: ../../../contracts/solc/v0.8.24/CCIPHome/CCIPHome.abi ../../../contracts/solc/v0.8.24/CCIPHome/CCIPHome.bin 76e5647a4574b1f09d9ee22ce1242f7c48d85412069a03e505b8000a7e3c7701 +ccip_home: ../../../contracts/solc/v0.8.24/CCIPHome/CCIPHome.abi ../../../contracts/solc/v0.8.24/CCIPHome/CCIPHome.bin 540cec5df4dbd8474975ed4b6d60baf8119cd57e610f33342912957a4a4bcc20 ccip_reader_tester: ../../../contracts/solc/v0.8.24/CCIPReaderTester/CCIPReaderTester.abi ../../../contracts/solc/v0.8.24/CCIPReaderTester/CCIPReaderTester.bin 893c9930e874fe5235db24e28a22650c37f562da94fac93618566bcd84839fdc ether_sender_receiver: ../../../contracts/solc/v0.8.24/EtherSenderReceiver/EtherSenderReceiver.abi ../../../contracts/solc/v0.8.24/EtherSenderReceiver/EtherSenderReceiver.bin 09510a3f773f108a3c231e8d202835c845ded862d071ec54c4f89c12d868b8de fee_quoter: ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.abi ../../../contracts/solc/v0.8.24/FeeQuoter/FeeQuoter.bin 0db599eee25f7269cb90a4701b00eac7709dd6287697e1a85c0f3e98f792e3a0 @@ -23,7 +23,7 @@ registry_module_owner_custom: ../../../contracts/solc/v0.8.24/RegistryModuleOwne report_codec: ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.abi ../../../contracts/solc/v0.8.24/ReportCodec/ReportCodec.bin 6c943b39f003aa67c3cefa19a8ff99e846236a058e1ceae77569c3a065ffd5c7 rmn_home: ../../../contracts/solc/v0.8.24/RMNHome/RMNHome.abi ../../../contracts/solc/v0.8.24/RMNHome/RMNHome.bin fa6f66001bb8de061f9c4672e83fdf3f57ab751a7de519a459908c96b077ce74 rmn_proxy_contract: ../../../contracts/solc/v0.8.24/ARMProxy/ARMProxy.abi ../../../contracts/solc/v0.8.24/ARMProxy/ARMProxy.bin b048d8e752e3c41113ebb305c1efa06737ad36b4907b93e627fb0a3113023454 -rmn_remote: ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.abi ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.bin 637a7adc456c1d08409a15b617bb9c7a709bf71d2a5f88022fafb4ccd445df83 +rmn_remote: ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.abi ../../../contracts/solc/v0.8.24/RMNRemote/RMNRemote.bin 82102dd2a7b5cc0b2a774cccea3b4c3a2e9c5e37b6faa3358cc49d3ad6fcd7c9 router: ../../../contracts/solc/v0.8.24/Router/Router.abi ../../../contracts/solc/v0.8.24/Router/Router.bin 2e4f0a7826c8abb49d882bb49fc5ff20a186dbd3137624b9097ffed903ae4888 token_admin_registry: ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.abi ../../../contracts/solc/v0.8.24/TokenAdminRegistry/TokenAdminRegistry.bin 942be7d1681ac102e0615bee13f76838ebb0b261697cf1270d2bf82c12e57aeb token_pool: ../../../contracts/solc/v0.8.24/TokenPool/TokenPool.abi ../../../contracts/solc/v0.8.24/TokenPool/TokenPool.bin 7c01fd89f5153baa4d7409d14beabb3f861abfbf8880d3c6d06802cc398570f9