From 854932121826c7c75eab0af1a37cb2ad6d08b3a2 Mon Sep 17 00:00:00 2001 From: Christopher Dimitri Sastropranoto Date: Tue, 4 Jun 2024 15:43:56 -0700 Subject: [PATCH] remove update capabilities --- .changeset/cuddly-lions-sneeze.md | 5 + contracts/.changeset/silent-ravens-lay.md | 5 + .../src/v0.8/keystone/CapabilityRegistry.sol | 14 +- ...ilityRegistry_UpdateCapabilitiesTest.t.sol | 136 ------------------ .../keystone_capability_registry.go | 18 +-- ...rapper-dependency-versions-do-not-edit.txt | 2 +- 6 files changed, 16 insertions(+), 164 deletions(-) create mode 100644 .changeset/cuddly-lions-sneeze.md create mode 100644 contracts/.changeset/silent-ravens-lay.md delete mode 100644 contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateCapabilitiesTest.t.sol diff --git a/.changeset/cuddly-lions-sneeze.md b/.changeset/cuddly-lions-sneeze.md new file mode 100644 index 00000000000..c524bb34246 --- /dev/null +++ b/.changeset/cuddly-lions-sneeze.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#internal remove update capabilities from capability registry diff --git a/contracts/.changeset/silent-ravens-lay.md b/contracts/.changeset/silent-ravens-lay.md new file mode 100644 index 00000000000..e987e9e0825 --- /dev/null +++ b/contracts/.changeset/silent-ravens-lay.md @@ -0,0 +1,5 @@ +--- +'@chainlink/contracts': patch +--- + +remove update capabilities from capability registry diff --git a/contracts/src/v0.8/keystone/CapabilityRegistry.sol b/contracts/src/v0.8/keystone/CapabilityRegistry.sol index 03c11c6819d..a45bcdf2a29 100644 --- a/contracts/src/v0.8/keystone/CapabilityRegistry.sol +++ b/contracts/src/v0.8/keystone/CapabilityRegistry.sol @@ -533,6 +533,9 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { /// @notice Adds a new capability to the capability registry /// @param capabilities The capabilities being added + /// @dev There is no function to update capabilities as this would require + /// nodes to trust that the capabilities they support are not updated by the + /// admin function addCapabilities(Capability[] calldata capabilities) external onlyOwner { for (uint256 i; i < capabilities.length; ++i) { Capability memory capability = capabilities[i]; @@ -543,17 +546,6 @@ contract CapabilityRegistry is OwnerIsCreator, TypeAndVersionInterface { } } - /// @notice Updates capabilities - /// @param capabilities The updated capability params - function updateCapabilities(Capability[] calldata capabilities) external onlyOwner { - for (uint256 i; i < capabilities.length; ++i) { - Capability memory capability = capabilities[i]; - bytes32 hashedCapabilityId = getHashedCapabilityId(capability.labelledName, capability.version); - if (!s_hashedCapabilityIds.contains(hashedCapabilityId)) revert CapabilityDoesNotExist(hashedCapabilityId); - _setCapability(hashedCapabilityId, capability); - } - } - /// @notice Deprecates a capability by adding it to the deprecated list /// @param hashedCapabilityIds[] The IDs of the capabilities to deprecate function deprecateCapabilities(bytes32[] calldata hashedCapabilityIds) external onlyOwner { diff --git a/contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateCapabilitiesTest.t.sol b/contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateCapabilitiesTest.t.sol deleted file mode 100644 index 07f6b3d6b07..00000000000 --- a/contracts/src/v0.8/keystone/test/CapabilityRegistry_UpdateCapabilitiesTest.t.sol +++ /dev/null @@ -1,136 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.19; - -import {BaseTest} from "./BaseTest.t.sol"; -import {CapabilityConfigurationContract} from "./mocks/CapabilityConfigurationContract.sol"; -import {ICapabilityConfiguration} from "../interfaces/ICapabilityConfiguration.sol"; -import {CapabilityRegistry} from "../CapabilityRegistry.sol"; -import {IERC165} from "../../vendor/openzeppelin-solidity/v4.8.3/contracts/interfaces/IERC165.sol"; - -contract CapabilityRegistry_UpdateCapabilitiesTest is BaseTest { - event CapabilityConfigured(bytes32 indexed hashedCapabilityId); - - CapabilityRegistry.Capability[] internal s_updatedCapabilities; - CapabilityConfigurationContract internal s_newCapabilityConfig; - - CapabilityRegistry.CapabilityResponseType constant NEW_BASIC_CAPABILITY_RESPONSE_TYPE = - CapabilityRegistry.CapabilityResponseType.OBSERVATION_IDENTICAL; - CapabilityRegistry.CapabilityResponseType constant NEW_CAPABILITY_WITH_CONFIG_CONTRACT_RESPONSE_TYPE = - CapabilityRegistry.CapabilityResponseType.REPORT; - - function setUp() public override { - BaseTest.setUp(); - - CapabilityRegistry.Capability[] memory capabilities = new CapabilityRegistry.Capability[](2); - capabilities[0] = s_basicCapability; - capabilities[1] = s_capabilityWithConfigurationContract; - - changePrank(ADMIN); - s_capabilityRegistry.addCapabilities(capabilities); - - s_newCapabilityConfig = new CapabilityConfigurationContract(); - - s_updatedCapabilities.push( - CapabilityRegistry.Capability({ - labelledName: "data-streams-reports", - version: "1.0.0", - responseType: NEW_BASIC_CAPABILITY_RESPONSE_TYPE, - configurationContract: address(s_newCapabilityConfig) - }) - ); - s_updatedCapabilities.push( - CapabilityRegistry.Capability({ - labelledName: "read-ethereum-mainnet-gas-price", - version: "1.0.2", - responseType: NEW_CAPABILITY_WITH_CONFIG_CONTRACT_RESPONSE_TYPE, - configurationContract: address(s_newCapabilityConfig) - }) - ); - } - - function test_RevertWhen_CalledByNonAdmin() public { - changePrank(STRANGER); - - vm.expectRevert("Only callable by owner"); - s_capabilityRegistry.updateCapabilities(s_updatedCapabilities); - } - - function test_RevertWhen_CapabilityDoesNotExists() public { - bytes32 versionNum = "1.0.3"; - s_updatedCapabilities[0].version = versionNum; - bytes32 hashedCapabilityId = s_capabilityRegistry.getHashedCapabilityId( - s_updatedCapabilities[0].labelledName, - versionNum - ); - vm.expectRevert(abi.encodeWithSelector(CapabilityRegistry.CapabilityDoesNotExist.selector, hashedCapabilityId)); - s_capabilityRegistry.updateCapabilities(s_updatedCapabilities); - } - - function test_RevertWhen_ConfigurationContractNotDeployed() public { - address nonExistentContract = address(1); - s_updatedCapabilities[1].configurationContract = nonExistentContract; - - vm.expectRevert( - abi.encodeWithSelector( - CapabilityRegistry.InvalidCapabilityConfigurationContractInterface.selector, - nonExistentContract - ) - ); - s_capabilityRegistry.updateCapabilities(s_updatedCapabilities); - } - - function test_RevertWhen_ConfigurationContractDoesNotMatchInterface() public { - address contractWithoutERC165 = address(9999); - vm.mockCall( - contractWithoutERC165, - abi.encodeWithSelector( - IERC165.supportsInterface.selector, - ICapabilityConfiguration.getCapabilityConfiguration.selector ^ - ICapabilityConfiguration.beforeCapabilityConfigSet.selector - ), - abi.encode(false) - ); - s_updatedCapabilities[1].configurationContract = contractWithoutERC165; - vm.expectRevert( - abi.encodeWithSelector( - CapabilityRegistry.InvalidCapabilityConfigurationContractInterface.selector, - contractWithoutERC165 - ) - ); - s_capabilityRegistry.updateCapabilities(s_updatedCapabilities); - } - - function test_UpdateCapabilities_NoConfigurationContract() public { - bytes32 hashedCapabilityId = s_capabilityRegistry.getHashedCapabilityId( - bytes32("data-streams-reports"), - bytes32("1.0.0") - ); - vm.expectEmit(true, true, true, true, address(s_capabilityRegistry)); - emit CapabilityConfigured(hashedCapabilityId); - s_capabilityRegistry.updateCapabilities(s_updatedCapabilities); - - CapabilityRegistry.Capability memory storedCapability = s_capabilityRegistry.getCapability(hashedCapabilityId); - - assertEq(storedCapability.labelledName, s_basicCapability.labelledName); - assertEq(storedCapability.version, s_basicCapability.version); - assertEq(uint256(storedCapability.responseType), uint256(NEW_BASIC_CAPABILITY_RESPONSE_TYPE)); - assertEq(storedCapability.configurationContract, address(s_newCapabilityConfig)); - } - - function test_UpdateCapabilities_WithConfiguration() public { - bytes32 hashedCapabilityId = s_capabilityRegistry.getHashedCapabilityId( - bytes32(s_capabilityWithConfigurationContract.labelledName), - bytes32(s_capabilityWithConfigurationContract.version) - ); - vm.expectEmit(true, true, true, true, address(s_capabilityRegistry)); - emit CapabilityConfigured(hashedCapabilityId); - s_capabilityRegistry.updateCapabilities(s_updatedCapabilities); - - CapabilityRegistry.Capability memory storedCapability = s_capabilityRegistry.getCapability(hashedCapabilityId); - - assertEq(storedCapability.labelledName, s_capabilityWithConfigurationContract.labelledName); - assertEq(storedCapability.version, s_capabilityWithConfigurationContract.version); - assertEq(uint256(storedCapability.responseType), uint256(NEW_CAPABILITY_WITH_CONFIG_CONTRACT_RESPONSE_TYPE)); - assertEq(storedCapability.configurationContract, address(s_newCapabilityConfig)); - } -} diff --git a/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go b/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go index 6641d3240fb..a5d93258be0 100644 --- a/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go +++ b/core/gethwrappers/keystone/generated/keystone_capability_registry/keystone_capability_registry.go @@ -63,8 +63,8 @@ type CapabilityRegistryNodeOperator struct { } var CapabilityRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"AccessForbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CapabilityAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityIsDeprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"DONDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedConfigurationContract\",\"type\":\"address\"}],\"name\":\"InvalidCapabilityConfigurationContractInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"InvalidNodeCapabilities\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeOperatorAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"InvalidNodeP2PId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lengthOne\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthTwo\",\"type\":\"uint256\"}],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"NodeDoesNotSupportCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"NodeOperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"NodePartOfDON\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDeprecated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"NodeOperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeUpdated\",\"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\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"capabilities\",\"type\":\"tuple[]\"}],\"name\":\"addCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"addDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"addNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"addNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"deprecateCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCapabilities\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"}],\"name\":\"getCapability\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"getCapabilityConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"getDON\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodeP2PIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"structCapabilityRegistry.DONInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDONs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodeP2PIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"structCapabilityRegistry.DONInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"}],\"name\":\"getHashedCapabilityId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"getNodeOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodeOperators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"isCapabilityDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"donIds\",\"type\":\"uint32[]\"}],\"name\":\"removeDONs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint32[]\"}],\"name\":\"removeNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"removedNodeP2PIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"capabilities\",\"type\":\"tuple[]\"}],\"name\":\"updateCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"updateDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"updateNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"updateNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600e80546001600160401b0319166401000000011790553480156200002857600080fd5b503380600081620000805760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000b357620000b381620000bc565b50505062000167565b336001600160a01b03821603620001165760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000077565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b614ae680620001776000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d83d967116100f95780638da5cb5b11610097578063caef831d11610071578063caef831d1461043c578063ddbe4f821461044f578063e29581aa14610464578063f2fde38b1461047a57600080fd5b80638da5cb5b146103e15780639cb7c5f414610409578063c63239c51461042957600080fd5b80636ae5c591116100d35780636ae5c591146103a057806373ac22b4146103b357806379ba5097146103c657806386fa4246146103ce57600080fd5b80635d83d967146103655780635e65e3091461037857806366acaa331461038b57600080fd5b8063275459f21161016657806336b402fb1161014057806336b402fb146102c8578063398f3773146103105780633f2a13c91461032357806350c946fe1461034457600080fd5b8063275459f21461028f5780632c01a1e8146102a25780632c3bc7a0146102b557600080fd5b80632145024311610197578063214502431461023a57806322bdbcbc1461024f578063235374051461026f57600080fd5b806312570011146101be578063181f5a77146101e65780631d05394c14610225575b600080fd5b6101d16101cc3660046138ae565b61048d565b60405190151581526020015b60405180910390f35b604080518082018252601881527f4361706162696c697479526567697374727920312e302e300000000000000000602082015290516101dd9190613935565b61023861023336600461398d565b6104a0565b005b61024261065c565b6040516101dd9190613adf565b61026261025d366004613b78565b6107b0565b6040516101dd9190613bd0565b61028261027d366004613b78565b61089d565b6040516101dd9190613be3565b61023861029d36600461398d565b6108d0565b6102386102b036600461398d565b6109af565b6102386102c3366004613bf6565b610c96565b6103026102d6366004613c6b565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040519081526020016101dd565b61023861031e36600461398d565b610d66565b610336610331366004613c8d565b610f29565b6040516101dd929190613cb7565b6103576103523660046138ae565b611113565b6040516101dd929190613d1e565b61023861037336600461398d565b611148565b61023861038636600461398d565b611291565b610393611794565b6040516101dd9190613d46565b6102386103ae366004613dc7565b61197f565b6102386103c136600461398d565b611a22565b610238611ee3565b6102386103dc366004613e4b565b611fe0565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b61041c6104173660046138ae565b61237a565b6040516101dd9190613f56565b610238610437366004613f64565b612424565b61023861044a366004613bf6565b6124b3565b61045761258d565b6040516101dd9190613ff7565b61046c61275c565b6040516101dd929190614045565b610238610488366004614128565b6128e7565b600061049a6005836128fb565b92915050565b6104a8612916565b60005b818110156106575760008383838181106104c7576104c7614143565b90506020020160208101906104dc9190613b78565b63ffffffff8082166000908152600d60209081526040808320805464010000000090049094168084526001850190925282209394509192905b61051e82612999565b811015610576576105658563ffffffff16600c600061054685876129a390919063ffffffff16565b81526020019081526020016000206004016129af90919063ffffffff16565b5061056f816141a1565b9050610515565b508254640100000000900463ffffffff166000036105cd576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff851660048201526024015b60405180910390fd5b63ffffffff84166000818152600d6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690558051938452908301919091527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a15050505080610650906141a1565b90506104ab565b505050565b600e54606090640100000000900463ffffffff16600061067d6001836141d9565b63ffffffff1667ffffffffffffffff81111561069b5761069b6141f6565b60405190808252806020026020018201604052801561071157816020015b6040805160a08101825260008082526020808301829052928201526060808201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106b95790505b509050600060015b8363ffffffff168163ffffffff16101561078d5763ffffffff8082166000908152600d6020526040902054161561077d57610753816129bb565b83838151811061076557610765614143565b60200260200101819052508161077a906141a1565b91505b61078681614225565b9050610719565b506107996001846141d9565b63ffffffff1681146107a9578082525b5092915050565b60408051808201909152600081526060602082015263ffffffff82166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff168352600181018054919284019161081490614248565b80601f016020809104026020016040519081016040528092919081815260200182805461084090614248565b801561088d5780601f106108625761010080835404028352916020019161088d565b820191906000526020600020905b81548152906001019060200180831161087057829003601f168201915b5050505050815250509050919050565b6040805160a081018252600080825260208201819052918101919091526060808201819052608082015261049a826129bb565b6108d8612916565b60005b63ffffffff811682111561065757600083838363ffffffff1681811061090357610903614143565b90506020020160208101906109189190613b78565b63ffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681559192506109636001830182613841565b505060405163ffffffff821681527fa59268ca81d40429e65ccea5385b59cf2d3fc6519371dee92f8eb1dae5107a7a9060200160405180910390a1506109a881614225565b90506108db565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610c905760008484838181106109e9576109e9614143565b602090810292909201356000818152600c90935260409092206001810154929350911515905080610a49576040517f64e2ee92000000000000000000000000000000000000000000000000000000008152600481018490526024016105c4565b6000610a5783600401612999565b1115610a92576040517f34a4a3f6000000000000000000000000000000000000000000000000000000008152600481018490526024016105c4565b815463ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191610ae490614248565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1090614248565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b505050505081525050905085158015610b8d5750805173ffffffffffffffffffffffffffffffffffffffff163314155b15610bc4576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001830154610bd5906007906129af565b506002830154610be7906009906129af565b506000848152600c6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016815560018101829055600281018290559060048201818181610c3c828261387b565b5050505050507f5254e609a97bab37b7cc79fe128f85c097bd6015c6e1624ae0ba392eb975320584604051610c7391815260200190565b60405180910390a15050505080610c89906141a1565b90506109cd565b50505050565b610c9e612916565b60005b81811015610657576000838383818110610cbd57610cbd614143565b905060800201803603810190610cd39190614313565b8051602080830151604080518084019490945283810191909152805180840382018152606090930190528151910120909150610d106003826128fb565b610d49576040517fe181733f000000000000000000000000000000000000000000000000000000008152600481018290526024016105c4565b610d538183612c54565b505080610d5f906141a1565b9050610ca1565b610d6e612916565b60005b81811015610657576000838383818110610d8d57610d8d614143565b9050602002810190610d9f919061436a565b610da8906143ee565b805190915073ffffffffffffffffffffffffffffffffffffffff16610df9576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54604080518082018252835173ffffffffffffffffffffffffffffffffffffffff908116825260208086015181840190815263ffffffff9095166000818152600b909252939020825181547fffffffffffffffffffffffff00000000000000000000000000000000000000001692169190911781559251919290916001820190610e8590826144e9565b5050600e8054909150600090610ea09063ffffffff16614225565b91906101000a81548163ffffffff021916908363ffffffff160217905550816000015173ffffffffffffffffffffffffffffffffffffffff167f78e94ca80be2c30abc061b99e7eb8583b1254781734b1e3ce339abb57da2fe8e828460200151604051610f0e929190614603565b60405180910390a2505080610f22906141a1565b9050610d71565b63ffffffff8083166000908152600d60209081526040808320805464010000000090049094168084526001909401825280832085845260030190915281208054606093849390929091610f7b90614248565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa790614248565b8015610ff45780601f10610fc957610100808354040283529160200191610ff4565b820191906000526020600020905b815481529060010190602001808311610fd757829003601f168201915b50505060008881526002602081905260409091200154929350606092610100900473ffffffffffffffffffffffffffffffffffffffff16159150611105905057600086815260026020819052604091829020015490517f8318ed5d00000000000000000000000000000000000000000000000000000000815263ffffffff8916600482015261010090910473ffffffffffffffffffffffffffffffffffffffff1690638318ed5d90602401600060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111029190810190614622565b90505b9093509150505b9250929050565b604080516080810182526000808252602082018190529181018290526060808201529061113f83612e7c565b91509150915091565b611150612916565b60005b8181101561065757600083838381811061116f5761116f614143565b90506020020135905061118c8160036128fb90919063ffffffff16565b6111c5576040517fe181733f000000000000000000000000000000000000000000000000000000008152600481018290526024016105c4565b6111d06005826128fb565b1561120a576040517ff7d7a294000000000000000000000000000000000000000000000000000000008152600481018290526024016105c4565b611215600582612f21565b5060008181526002602081905260408083208381556001810184905590910180547fffffffffffffffffffffff0000000000000000000000000000000000000000001690555182917fdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf2191a25061128a816141a1565b9050611153565b60005b818110156106575760008383838181106112b0576112b0614143565b90506020028101906112c29190614690565b6112cb906146c4565b905060006112ee60005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff9081168352600182018054969091163314965093949193909284019161134b90614248565b80601f016020809104026020016040519081016040528092919081815260200182805461137790614248565b80156113c45780601f10611399576101008083540402835291602001916113c4565b820191906000526020600020905b8154815290600101906020018083116113a757829003601f168201915b5050505050815250509050811580156113f45750805173ffffffffffffffffffffffffffffffffffffffff163314155b1561142b576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600c60205220600101541515806114815783604001516040517f64e2ee920000000000000000000000000000000000000000000000000000000081526004016105c491815260200190565b602084015115806114c757508360200151600c60008660400151815260200190815260200160002060010154141580156114c7575060208401516114c7906007906128fb565b156114fe576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060840151805160000361154057806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105c49190614797565b6040858101516000908152600c602052208054640100000000900463ffffffff1690600461156d83614225565b82546101009290920a63ffffffff8181021990931691831602179091556040878101516000908152600c60205290812054640100000000900490911691505b8251811015611678576115e28382815181106115ca576115ca614143565b602002602001015160036128fb90919063ffffffff16565b61161a57826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105c49190614797565b61166783828151811061162f5761162f614143565b6020908102919091018101516040808b01516000908152600c845281812063ffffffff808916835260039091019094522091612f2116565b50611671816141a1565b90506115ac565b508551604080880180516000908152600c602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9096169590951790945581518082528382206002015581518152828120600190810154948b015192518252929020909101541461172d576116fc6007826129af565b50602080880180516040808b01516000908152600c909452909220600101919091555161172b90600790612f21565b505b60408781015188516020808b0151845193845263ffffffff909216908301528183015290517f4b5b465e22eea0c3d40c30e936643245b80d19b2dcf75788c0699fe8d8db645b9181900360600190a1505050505050508061178d906141a1565b9050611294565b600e5460609063ffffffff1660006117ad6001836141d9565b63ffffffff1667ffffffffffffffff8111156117cb576117cb6141f6565b60405190808252806020026020018201604052801561181157816020015b6040805180820190915260008152606060208201528152602001906001900390816117e95790505b509050600060015b8363ffffffff168163ffffffff1610156119695763ffffffff81166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16156119595763ffffffff81166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff16835260018101805491928401916118ad90614248565b80601f01602080910402602001604051908101604052809291908181526020018280546118d990614248565b80156119265780601f106118fb57610100808354040283529160200191611926565b820191906000526020600020905b81548152906001019060200180831161190957829003601f168201915b50505050508152505083838151811061194157611941614143565b602002602001018190525081611956906141a1565b91505b61196281614225565b9050611819565b50600e546107999060019063ffffffff166141d9565b611987612916565b600e54640100000000900463ffffffff166000818152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016821790556119de8160018888888888612f2d565b600e80546004906119fc90640100000000900463ffffffff16614225565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b60005b81811015610657576000838383818110611a4157611a41614143565b9050602002810190611a539190614690565b611a5c906146c4565b90506000611a7f60005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff90811683526001820180549690911633149650939491939092840191611adc90614248565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0890614248565b8015611b555780601f10611b2a57610100808354040283529160200191611b55565b820191906000526020600020905b815481529060010190602001808311611b3857829003601f168201915b50505091909252505081519192505073ffffffffffffffffffffffffffffffffffffffff16611bbb5782516040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016105c4565b81158015611be05750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611c17576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600c602052206001015415158080611c3c57506040840151155b15611c7b5783604001516040517f64e2ee920000000000000000000000000000000000000000000000000000000081526004016105c491815260200190565b60208401511580611c9857506020840151611c98906007906128fb565b15611ccf576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608401518051600003611d1157806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105c49190614797565b6040858101516000908152600c602052208054600490611d3e90640100000000900463ffffffff16614225565b82546101009290920a63ffffffff8181021990931691831602179091556040868101516000908152600c602052908120546401000000009004909116905b8251811015611df857611d9a8382815181106115ca576115ca614143565b611dd257826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105c49190614797565b611de783828151811061162f5761162f614143565b50611df1816141a1565b9050611d7c565b508551604080880180516000908152600c602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9687161790558251808352848320600201558a018051925182529290206001015551611e6a9160079190612f2116565b506040860151611e7c90600990612f21565b5060408681015187516020808a0151845193845263ffffffff909216908301528183015290517f74becb12a5e8fd0e98077d02dfba8f647c9670c9df177e42c2418cf17a636f059181900360600190a150505050505080611edc906141a1565b9050611a25565b60015473ffffffffffffffffffffffffffffffffffffffff163314611f64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016105c4565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b828114612023576040517fab8b67c600000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105c4565b6000805473ffffffffffffffffffffffffffffffffffffffff16905b8481101561237257600086868381811061205b5761205b614143565b90506020020160208101906120709190613b78565b63ffffffff81166000908152600b602052604090205490915073ffffffffffffffffffffffffffffffffffffffff166120dd576040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526024016105c4565b60008585848181106120f1576120f1614143565b9050602002810190612103919061436a565b61210c906143ee565b805190915073ffffffffffffffffffffffffffffffffffffffff1661215d576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805173ffffffffffffffffffffffffffffffffffffffff16331480159061219a57503373ffffffffffffffffffffffffffffffffffffffff851614155b156121d1576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805163ffffffff83166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff9081169116141580612291575060208082015160405161221e9201613935565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012063ffffffff86166000908152600b83529290922091926122789260010191016147cf565b6040516020818303038152906040528051906020012014155b1561235f57805163ffffffff83166000908152600b6020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217825582015160019091019061230590826144e9565b50806000015173ffffffffffffffffffffffffffffffffffffffff167f86f41145bde5dd7f523305452e4aad3685508c181432ec733d5f345009358a28838360200151604051612356929190614603565b60405180910390a25b50508061236b906141a1565b905061203f565b505050505050565b604080516080808201835260008083526020808401829052838501829052606084018290528582526002808252918590208551938401865280548452600180820154928501929092529182015493949293919284019160ff16908111156123e3576123e3613eb7565b60018111156123f4576123f4613eb7565b815260029190910154610100900473ffffffffffffffffffffffffffffffffffffffff1660209091015292915050565b61242c612916565b63ffffffff8087166000908152600d6020526040812054640100000000900490911690819003612490576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff881660048201526024016105c4565b6124aa8761249d83614225565b9250828888888888612f2d565b50505050505050565b6124bb612916565b60005b818110156106575760008383838181106124da576124da614143565b9050608002018036038101906124f09190614313565b805160208083015160408051808401949094528381019190915280518084038201815260609093019052815191012090915061252d6003826128fb565b15612564576040517fe288638f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61256f600382612f21565b5061257a8183612c54565b505080612586906141a1565b90506124be565b6060600061259b6003613498565b905060006125a96005612999565b82516125b59190614878565b67ffffffffffffffff8111156125cd576125cd6141f6565b60405190808252806020026020018201604052801561263d57816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816125eb5790505b5090506000805b835181101561275357600084828151811061266157612661614143565b6020026020010151905061267f8160056128fb90919063ffffffff16565b612742576002600082815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff1660018111156126d9576126d9613eb7565b60018111156126ea576126ea613eb7565b815260029190910154610100900473ffffffffffffffffffffffffffffffffffffffff16602090910152845185908590811061272857612728614143565b6020026020010181905250828061273e906141a1565b9350505b5061274c816141a1565b9050612644565b50909392505050565b606080600061276b6009613498565b90506000815167ffffffffffffffff811115612789576127896141f6565b6040519080825280602002602001820160405280156127f857816020015b60408051608081018252600080825260208083018290529282015260608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816127a75790505b5090506000825167ffffffffffffffff811115612817576128176141f6565b604051908082528060200260200182016040528015612840578160200160208202803683370190505b50905060005b83518110156128dc57600084828151811061286357612863614143565b6020026020010151905060008061287983612e7c565b915091508186858151811061289057612890614143565b6020026020010181905250808585815181106128ae576128ae614143565b602002602001019063ffffffff16908163ffffffff1681525050505050806128d5906141a1565b9050612846565b509094909350915050565b6128ef612916565b6128f8816134a5565b50565b600081815260018301602052604081205415155b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016105c4565b565b600061049a825490565b600061290f838361359a565b600061290f83836135c4565b6040805160a081018252600080825260208083018290528284018290526060808401819052608084015263ffffffff8581168352600d8252848320805464010000000090049091168084526001909101825284832060028101805487518186028101860190985280885295969295919493909190830182828015612a5e57602002820191906000526020600020905b815481526020019060010190808311612a4a575b505050505090506000815167ffffffffffffffff811115612a8157612a816141f6565b604051908082528060200260200182016040528015612ac757816020015b604080518082019091526000815260606020820152815260200190600190039081612a9f5790505b50905060005b8151811015612be8576040518060400160405280848381518110612af357612af3614143565b60200260200101518152602001856003016000868581518110612b1857612b18614143565b602002602001015181526020019081526020016000208054612b3990614248565b80601f0160208091040260200160405190810160405280929190818152602001828054612b6590614248565b8015612bb25780601f10612b8757610100808354040283529160200191612bb2565b820191906000526020600020905b815481529060010190602001808311612b9557829003601f168201915b5050505050815250828281518110612bcc57612bcc614143565b602002602001018190525080612be1906141a1565b9050612acd565b506040805160a08101825263ffffffff8881166000818152600d6020818152868320548086168752948b168187015292909152905268010000000000000000900460ff1615159181019190915260608101612c4285613498565b81526020019190915295945050505050565b606081015173ffffffffffffffffffffffffffffffffffffffff1615612da257606081015173ffffffffffffffffffffffffffffffffffffffff163b1580612d4d575060608101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f78bea72100000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906301ffc9a790602401602060405180830381865afa158015612d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4b919061488b565b155b15612da25760608101516040517fabb5e3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016105c4565b8060026000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff02191690836001811115612df457612df4613eb7565b0217905550606091909101516002909101805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff90921691909117905560405182907f04f0a9bcf3f3a3b42a4d7ca081119755f82ebe43e0d30c8f7292c4fe0dc4a2ae90600090a25050565b6040805160808101825260008082526020820181905291810191909152606080820152604080516080810182526000848152600c6020908152838220805463ffffffff808216865260018301548487015260028301548688015264010000000090910416835260030190529182206060820190612ef890613498565b90526000938452600c602052604090932054929364010000000090930463ffffffff1692915050565b600061290f83836136b7565b63ffffffff8088166000908152600d60209081526040808320938a168084526001948501909252909120911015612fec5763ffffffff88166000908152600d602052604081206001908101908290612f85908b6141d9565b63ffffffff1663ffffffff168152602001908152602001600020905060005b612fad82612999565b811015612fe957612fd88a63ffffffff16600c600061054685876000016129a390919063ffffffff16565b50612fe2816141a1565b9050612fa4565b50505b60005b858110156130fa5761301c87878381811061300c5761300c614143565b85926020909102013590506128fb565b1561307d578887878381811061303457613034614143565b6040517f636e405700000000000000000000000000000000000000000000000000000000815263ffffffff909416600485015260200291909101356024830152506044016105c4565b6130a287878381811061309257613092614143565b8592602090910201359050612f21565b506130e98963ffffffff16600c60008a8a868181106130c3576130c3614143565b905060200201358152602001908152602001600020600401612f2190919063ffffffff16565b506130f3816141a1565b9050612fef565b5060005b838110156133d9573685858381811061311957613119614143565b905060200281019061312b919061436a565b9050613139600382356128fb565b613172576040517fe181733f000000000000000000000000000000000000000000000000000000008152813560048201526024016105c4565b61317e600582356128fb565b156131b8576040517ff7d7a294000000000000000000000000000000000000000000000000000000008152813560048201526024016105c4565b80356000908152600384016020526040812080546131d590614248565b9050111561321e576040517f3927d08000000000000000000000000000000000000000000000000000000000815263ffffffff8b166004820152813560248201526044016105c4565b60005b87811015613330576132c58235600c60008c8c8681811061324457613244614143565b9050602002013581526020019081526020016000206003016000600c60008e8e8881811061327457613274614143565b90506020020135815260200190815260200160002060000160049054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206128fb90919063ffffffff16565b613320578888828181106132db576132db614143565b6040517fa7e7925000000000000000000000000000000000000000000000000000000000815260209091029290920135600483015250823560248201526044016105c4565b613329816141a1565b9050613221565b5060028301805460018101825560009182526020918290208335910155613359908201826148a8565b8235600090815260038601602052604090209161337791908361490d565b506133c88a8a83358b8b61338e60208801886148a8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061370692505050565b506133d2816141a1565b90506130fe565b5063ffffffff8881166000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1668010000000000000000881515027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff1617640100000000958d1695860217905581519283528201929092527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a15050505050505050565b6060600061290f836137e5565b3373ffffffffffffffffffffffffffffffffffffffff821603613524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016105c4565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008260000182815481106135b1576135b1614143565b9060005260206000200154905092915050565b600081815260018301602052604081205480156136ad5760006135e8600183614878565b85549091506000906135fc90600190614878565b905081811461366157600086600001828154811061361c5761361c614143565b906000526020600020015490508087600001848154811061363f5761363f614143565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061367257613672614a28565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049a565b600091505061049a565b60008181526001830160205260408120546136fe5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049a565b50600061049a565b60008481526002602081905260409091200154610100900473ffffffffffffffffffffffffffffffffffffffff161561237257600084815260026020819052604091829020015490517ffba64a7c00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063fba64a7c906137ab908690869086908b908d90600401614a57565b600060405180830381600087803b1580156137c557600080fd5b505af11580156137d9573d6000803e3d6000fd5b50505050505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561383557602002820191906000526020600020905b815481526020019060010190808311613821575b50505050509050919050565b50805461384d90614248565b6000825580601f1061385d575050565b601f0160209004906000526020600020908101906128f89190613895565b50805460008255906000526020600020908101906128f891905b5b808211156138aa5760008155600101613896565b5090565b6000602082840312156138c057600080fd5b5035919050565b60005b838110156138e25781810151838201526020016138ca565b50506000910152565b600081518084526139038160208601602086016138c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061290f60208301846138eb565b60008083601f84011261395a57600080fd5b50813567ffffffffffffffff81111561397257600080fd5b6020830191508360208260051b850101111561110c57600080fd5b600080602083850312156139a057600080fd5b823567ffffffffffffffff8111156139b757600080fd5b6139c385828601613948565b90969095509350505050565b600081518084526020808501945080840160005b838110156139ff578151875295820195908201906001016139e3565b509495945050505050565b600063ffffffff8083511684526020818185015116818601526040915081840151151582860152606084015160a06060870152613a4a60a08701826139cf565b9050608085015186820360808801528181518084528484019150848160051b850101858401935060005b82811015613ad1578582037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018452845180518352870151878301899052613abe898401826138eb565b9588019594880194925050600101613a74565b509998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613b52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613b40858351613a0a565b94509285019290850190600101613b06565b5092979650505050505050565b803563ffffffff81168114613b7357600080fd5b919050565b600060208284031215613b8a57600080fd5b61290f82613b5f565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152613bc860408501826138eb565b949350505050565b60208152600061290f6020830184613b93565b60208152600061290f6020830184613a0a565b60008060208385031215613c0957600080fd5b823567ffffffffffffffff80821115613c2157600080fd5b818501915085601f830112613c3557600080fd5b813581811115613c4457600080fd5b8660208260071b8501011115613c5957600080fd5b60209290920196919550909350505050565b60008060408385031215613c7e57600080fd5b50508035926020909101359150565b60008060408385031215613ca057600080fd5b613ca983613b5f565b946020939093013593505050565b604081526000613cca60408301856138eb565b8281036020840152613cdc81856138eb565b95945050505050565b63ffffffff815116825260208101516020830152604081015160408301526000606082015160806060850152613bc860808501826139cf565b604081526000613d316040830185613ce5565b905063ffffffff831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613b52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613da7858351613b93565b94509285019290850190600101613d6d565b80151581146128f857600080fd5b600080600080600060608688031215613ddf57600080fd5b853567ffffffffffffffff80821115613df757600080fd5b613e0389838a01613948565b90975095506020880135915080821115613e1c57600080fd5b50613e2988828901613948565b9094509250506040860135613e3d81613db9565b809150509295509295909350565b60008060008060408587031215613e6157600080fd5b843567ffffffffffffffff80821115613e7957600080fd5b613e8588838901613948565b90965094506020870135915080821115613e9e57600080fd5b50613eab87828801613948565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8051825260208101516020830152604081015160028110613f30577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b604083015260609081015173ffffffffffffffffffffffffffffffffffffffff16910152565b6080810161049a8284613ee6565b60008060008060008060808789031215613f7d57600080fd5b613f8687613b5f565b9550602087013567ffffffffffffffff80821115613fa357600080fd5b613faf8a838b01613948565b90975095506040890135915080821115613fc857600080fd5b50613fd589828a01613948565b9094509250506060870135613fe981613db9565b809150509295509295509295565b6020808252825182820181905260009190848201906040850190845b8181101561403957614026838551613ee6565b9284019260809290920191600101614013565b50909695505050505050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156140ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526140a8868351613ce5565b9550938201939082019060010161406e565b50508584038187015286518085528782019482019350915060005b828110156140f757845163ffffffff16845293810193928101926001016140d5565b5091979650505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613b7357600080fd5b60006020828403121561413a57600080fd5b61290f82614104565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036141d2576141d2614172565b5060010190565b63ffffffff8281168282160390808211156107a9576107a9614172565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600063ffffffff80831681810361423e5761423e614172565b6001019392505050565b600181811c9082168061425c57607f821691505b602082108103614295577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6040516080810167ffffffffffffffff811182821017156142be576142be6141f6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561430b5761430b6141f6565b604052919050565b60006080828403121561432557600080fd5b61432d61429b565b823581526020830135602082015260408301356002811061434d57600080fd5b604082015261435e60608401614104565b60608201529392505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261439e57600080fd5b9190910192915050565b600067ffffffffffffffff8211156143c2576143c26141f6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040823603121561440057600080fd5b6040516040810167ffffffffffffffff8282108183111715614424576144246141f6565b8160405261443185614104565b835260209150818501358181111561444857600080fd5b8501905036601f82011261445b57600080fd5b803561446e614469826143a8565b6142c4565b818152368483850101111561448257600080fd5b81848401858301376000918101840191909152918301919091525092915050565b601f82111561065757600081815260208120601f850160051c810160208610156144ca5750805b601f850160051c820191505b81811015612372578281556001016144d6565b815167ffffffffffffffff811115614503576145036141f6565b614517816145118454614248565b846144a3565b602080601f83116001811461456a57600084156145345750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612372565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156145b757888601518255948401946001909101908401614598565b50858210156145f357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff83168152604060208201526000613bc860408301846138eb565b60006020828403121561463457600080fd5b815167ffffffffffffffff81111561464b57600080fd5b8201601f8101841361465c57600080fd5b805161466a614469826143a8565b81815285602083850101111561467f57600080fd5b613cdc8260208301602086016138c7565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261439e57600080fd5b6000608082360312156146d657600080fd5b6146de61429b565b6146e783613b5f565b81526020808401358183015260408401356040830152606084013567ffffffffffffffff8082111561471857600080fd5b9085019036601f83011261472b57600080fd5b81358181111561473d5761473d6141f6565b8060051b915061474e8483016142c4565b818152918301840191848101903684111561476857600080fd5b938501935b838510156147865784358252938501939085019061476d565b606087015250939695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614039578351835292840192918401916001016147b3565b60006020808352600084546147e381614248565b80848701526040600180841660008114614804576001811461483c5761486a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a0101955061486a565b896000528660002060005b858110156148625781548b8201860152908301908801614847565b8a0184019650505b509398975050505050505050565b8181038181111561049a5761049a614172565b60006020828403121561489d57600080fd5b815161290f81613db9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126148dd57600080fd5b83018035915067ffffffffffffffff8211156148f857600080fd5b60200191503681900382131561110c57600080fd5b67ffffffffffffffff831115614925576149256141f6565b614939836149338354614248565b836144a3565b6000601f84116001811461498b57600085156149555750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355614a21565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156149da57868501358255602094850194600190920191016149ba565b5086821015614a15577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6080815284608082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861115614a9057600080fd5b8560051b808860a0850137820182810360a09081016020850152614ab6908201876138eb565b91505063ffffffff8085166040840152808416606084015250969550505050505056fea164736f6c6343000813000a", + ABI: "[{\"inputs\":[],\"name\":\"AccessForbidden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CapabilityAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityIsDeprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"DONDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedConfigurationContract\",\"type\":\"address\"}],\"name\":\"InvalidCapabilityConfigurationContractInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"InvalidNodeCapabilities\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeOperatorAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"InvalidNodeP2PId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lengthOne\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthTwo\",\"type\":\"uint256\"}],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"NodeDoesNotSupportCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"NodeOperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"NodePartOfDON\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDeprecated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"NodeOperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeUpdated\",\"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\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"capabilities\",\"type\":\"tuple[]\"}],\"name\":\"addCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"addDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"addNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"addNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"deprecateCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCapabilities\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"}],\"name\":\"getCapability\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"enumCapabilityRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilityRegistry.Capability\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"getCapabilityConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"getDON\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodeP2PIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"structCapabilityRegistry.DONInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDONs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodeP2PIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"structCapabilityRegistry.DONInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"labelledName\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"}],\"name\":\"getHashedCapabilityId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"getNodeOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodeOperators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"isCapabilityDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"donIds\",\"type\":\"uint32[]\"}],\"name\":\"removeDONs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint32[]\"}],\"name\":\"removeNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"removedNodeP2PIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilityRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"}],\"name\":\"updateDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilityRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"updateNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilityRegistry.NodeInfo[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"updateNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600e80546001600160401b0319166401000000011790553480156200002857600080fd5b503380600081620000805760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000b357620000b381620000bc565b50505062000167565b336001600160a01b03821603620001165760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000077565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6149f880620001776000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80635e65e309116100ee5780638da5cb5b11610097578063caef831d11610071578063caef831d1461041e578063ddbe4f8214610431578063e29581aa14610446578063f2fde38b1461045c57600080fd5b80638da5cb5b146103c35780639cb7c5f4146103eb578063c63239c51461040b57600080fd5b806373ac22b4116100c857806373ac22b41461039557806379ba5097146103a857806386fa4246146103b057600080fd5b80635e65e3091461035a57806366acaa331461036d5780636ae5c5911461038257600080fd5b8063275459f21161015b578063398f377311610135578063398f3773146102f25780633f2a13c91461030557806350c946fe146103265780635d83d9671461034757600080fd5b8063275459f2146102845780632c01a1e81461029757806336b402fb146102aa57600080fd5b8063214502431161018c578063214502431461022f57806322bdbcbc14610244578063235374051461026457600080fd5b806312570011146101b3578063181f5a77146101db5780631d05394c1461021a575b600080fd5b6101c66101c13660046137c0565b61046f565b60405190151581526020015b60405180910390f35b604080518082018252601881527f4361706162696c697479526567697374727920312e302e300000000000000000602082015290516101d29190613847565b61022d61022836600461389f565b610482565b005b61023761063e565b6040516101d291906139f1565b610257610252366004613a8a565b610792565b6040516101d29190613ae2565b610277610272366004613a8a565b61087f565b6040516101d29190613af5565b61022d61029236600461389f565b6108b2565b61022d6102a536600461389f565b610991565b6102e46102b8366004613b08565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6040519081526020016101d2565b61022d61030036600461389f565b610c78565b610318610313366004613b2a565b610e3b565b6040516101d2929190613b54565b6103396103343660046137c0565b611025565b6040516101d2929190613bbb565b61022d61035536600461389f565b61105a565b61022d61036836600461389f565b6111a3565b6103756116a6565b6040516101d29190613be3565b61022d610390366004613c64565b611891565b61022d6103a336600461389f565b611934565b61022d611df5565b61022d6103be366004613ce8565b611ef2565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b6103fe6103f93660046137c0565b61228c565b6040516101d29190613df3565b61022d610419366004613e01565b612336565b61022d61042c366004613e94565b6123c5565b61043961249f565b6040516101d29190613f09565b61044e61266e565b6040516101d2929190613f57565b61022d61046a36600461403a565b6127f9565b600061047c60058361280d565b92915050565b61048a612828565b60005b818110156106395760008383838181106104a9576104a9614055565b90506020020160208101906104be9190613a8a565b63ffffffff8082166000908152600d60209081526040808320805464010000000090049094168084526001850190925282209394509192905b610500826128ab565b811015610558576105478563ffffffff16600c600061052885876128b590919063ffffffff16565b81526020019081526020016000206004016128c190919063ffffffff16565b50610551816140b3565b90506104f7565b508254640100000000900463ffffffff166000036105af576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff851660048201526024015b60405180910390fd5b63ffffffff84166000818152600d6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001690558051938452908301919091527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a15050505080610632906140b3565b905061048d565b505050565b600e54606090640100000000900463ffffffff16600061065f6001836140eb565b63ffffffff1667ffffffffffffffff81111561067d5761067d614108565b6040519080825280602002602001820160405280156106f357816020015b6040805160a08101825260008082526020808301829052928201526060808201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161069b5790505b509050600060015b8363ffffffff168163ffffffff16101561076f5763ffffffff8082166000908152600d6020526040902054161561075f57610735816128cd565b83838151811061074757610747614055565b60200260200101819052508161075c906140b3565b91505b61076881614137565b90506106fb565b5061077b6001846140eb565b63ffffffff16811461078b578082525b5092915050565b60408051808201909152600081526060602082015263ffffffff82166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff16835260018101805491928401916107f69061415a565b80601f01602080910402602001604051908101604052809291908181526020018280546108229061415a565b801561086f5780601f106108445761010080835404028352916020019161086f565b820191906000526020600020905b81548152906001019060200180831161085257829003601f168201915b5050505050815250509050919050565b6040805160a081018252600080825260208201819052918101919091526060808201819052608082015261047c826128cd565b6108ba612828565b60005b63ffffffff811682111561063957600083838363ffffffff168181106108e5576108e5614055565b90506020020160208101906108fa9190613a8a565b63ffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681559192506109456001830182613753565b505060405163ffffffff821681527fa59268ca81d40429e65ccea5385b59cf2d3fc6519371dee92f8eb1dae5107a7a9060200160405180910390a15061098a81614137565b90506108bd565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610c725760008484838181106109cb576109cb614055565b602090810292909201356000818152600c90935260409092206001810154929350911515905080610a2b576040517f64e2ee92000000000000000000000000000000000000000000000000000000008152600481018490526024016105a6565b6000610a39836004016128ab565b1115610a74576040517f34a4a3f6000000000000000000000000000000000000000000000000000000008152600481018490526024016105a6565b815463ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff1682526001810180549293919291840191610ac69061415a565b80601f0160208091040260200160405190810160405280929190818152602001828054610af29061415a565b8015610b3f5780601f10610b1457610100808354040283529160200191610b3f565b820191906000526020600020905b815481529060010190602001808311610b2257829003601f168201915b505050505081525050905085158015610b6f5750805173ffffffffffffffffffffffffffffffffffffffff163314155b15610ba6576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001830154610bb7906007906128c1565b506002830154610bc9906009906128c1565b506000848152600c6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016815560018101829055600281018290559060048201818181610c1e828261378d565b5050505050507f5254e609a97bab37b7cc79fe128f85c097bd6015c6e1624ae0ba392eb975320584604051610c5591815260200190565b60405180910390a15050505080610c6b906140b3565b90506109af565b50505050565b610c80612828565b60005b81811015610639576000838383818110610c9f57610c9f614055565b9050602002810190610cb191906141ad565b610cba906142a9565b805190915073ffffffffffffffffffffffffffffffffffffffff16610d0b576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54604080518082018252835173ffffffffffffffffffffffffffffffffffffffff908116825260208086015181840190815263ffffffff9095166000818152600b909252939020825181547fffffffffffffffffffffffff00000000000000000000000000000000000000001692169190911781559251919290916001820190610d9790826143a4565b5050600e8054909150600090610db29063ffffffff16614137565b91906101000a81548163ffffffff021916908363ffffffff160217905550816000015173ffffffffffffffffffffffffffffffffffffffff167f78e94ca80be2c30abc061b99e7eb8583b1254781734b1e3ce339abb57da2fe8e828460200151604051610e209291906144be565b60405180910390a2505080610e34906140b3565b9050610c83565b63ffffffff8083166000908152600d60209081526040808320805464010000000090049094168084526001909401825280832085845260030190915281208054606093849390929091610e8d9061415a565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb99061415a565b8015610f065780601f10610edb57610100808354040283529160200191610f06565b820191906000526020600020905b815481529060010190602001808311610ee957829003601f168201915b50505060008881526002602081905260409091200154929350606092610100900473ffffffffffffffffffffffffffffffffffffffff16159150611017905057600086815260026020819052604091829020015490517f8318ed5d00000000000000000000000000000000000000000000000000000000815263ffffffff8916600482015261010090910473ffffffffffffffffffffffffffffffffffffffff1690638318ed5d90602401600060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261101491908101906144dd565b90505b9093509150505b9250929050565b604080516080810182526000808252602082018190529181018290526060808201529061105183612b66565b91509150915091565b611062612828565b60005b8181101561063957600083838381811061108157611081614055565b90506020020135905061109e81600361280d90919063ffffffff16565b6110d7576040517fe181733f000000000000000000000000000000000000000000000000000000008152600481018290526024016105a6565b6110e260058261280d565b1561111c576040517ff7d7a294000000000000000000000000000000000000000000000000000000008152600481018290526024016105a6565b611127600582612c0b565b5060008181526002602081905260408083208381556001810184905590910180547fffffffffffffffffffffff0000000000000000000000000000000000000000001690555182917fdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf2191a25061119c816140b3565b9050611065565b60005b818110156106395760008383838181106111c2576111c2614055565b90506020028101906111d4919061454b565b6111dd9061457f565b9050600061120060005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff9081168352600182018054969091163314965093949193909284019161125d9061415a565b80601f01602080910402602001604051908101604052809291908181526020018280546112899061415a565b80156112d65780601f106112ab576101008083540402835291602001916112d6565b820191906000526020600020905b8154815290600101906020018083116112b957829003601f168201915b5050505050815250509050811580156113065750805173ffffffffffffffffffffffffffffffffffffffff163314155b1561133d576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600c60205220600101541515806113935783604001516040517f64e2ee920000000000000000000000000000000000000000000000000000000081526004016105a691815260200190565b602084015115806113d957508360200151600c60008660400151815260200190815260200160002060010154141580156113d9575060208401516113d99060079061280d565b15611410576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060840151805160000361145257806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105a69190614652565b6040858101516000908152600c602052208054640100000000900463ffffffff1690600461147f83614137565b82546101009290920a63ffffffff8181021990931691831602179091556040878101516000908152600c60205290812054640100000000900490911691505b825181101561158a576114f48382815181106114dc576114dc614055565b6020026020010151600361280d90919063ffffffff16565b61152c57826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105a69190614652565b61157983828151811061154157611541614055565b6020908102919091018101516040808b01516000908152600c845281812063ffffffff808916835260039091019094522091612c0b16565b50611583816140b3565b90506114be565b508551604080880180516000908152600c602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9096169590951790945581518082528382206002015581518152828120600190810154948b015192518252929020909101541461163f5761160e6007826128c1565b50602080880180516040808b01516000908152600c909452909220600101919091555161163d90600790612c0b565b505b60408781015188516020808b0151845193845263ffffffff909216908301528183015290517f4b5b465e22eea0c3d40c30e936643245b80d19b2dcf75788c0699fe8d8db645b9181900360600190a1505050505050508061169f906140b3565b90506111a6565b600e5460609063ffffffff1660006116bf6001836140eb565b63ffffffff1667ffffffffffffffff8111156116dd576116dd614108565b60405190808252806020026020018201604052801561172357816020015b6040805180820190915260008152606060208201528152602001906001900390816116fb5790505b509050600060015b8363ffffffff168163ffffffff16101561187b5763ffffffff81166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff161561186b5763ffffffff81166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff16835260018101805491928401916117bf9061415a565b80601f01602080910402602001604051908101604052809291908181526020018280546117eb9061415a565b80156118385780601f1061180d57610100808354040283529160200191611838565b820191906000526020600020905b81548152906001019060200180831161181b57829003601f168201915b50505050508152505083838151811061185357611853614055565b602002602001018190525081611868906140b3565b91505b61187481614137565b905061172b565b50600e5461077b9060019063ffffffff166140eb565b611899612828565b600e54640100000000900463ffffffff166000818152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016821790556118f08160018888888888612c17565b600e805460049061190e90640100000000900463ffffffff16614137565b91906101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b60005b8181101561063957600083838381811061195357611953614055565b9050602002810190611965919061454b565b61196e9061457f565b9050600061199160005473ffffffffffffffffffffffffffffffffffffffff1690565b825163ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff908116835260018201805496909116331496509394919390928401916119ee9061415a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1a9061415a565b8015611a675780601f10611a3c57610100808354040283529160200191611a67565b820191906000526020600020905b815481529060010190602001808311611a4a57829003601f168201915b50505091909252505081519192505073ffffffffffffffffffffffffffffffffffffffff16611acd5782516040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024016105a6565b81158015611af25750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611b29576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040808401516000908152600c602052206001015415158080611b4e57506040840151155b15611b8d5783604001516040517f64e2ee920000000000000000000000000000000000000000000000000000000081526004016105a691815260200190565b60208401511580611baa57506020840151611baa9060079061280d565b15611be1576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608401518051600003611c2357806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105a69190614652565b6040858101516000908152600c602052208054600490611c5090640100000000900463ffffffff16614137565b82546101009290920a63ffffffff8181021990931691831602179091556040868101516000908152600c602052908120546401000000009004909116905b8251811015611d0a57611cac8382815181106114dc576114dc614055565b611ce457826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016105a69190614652565b611cf983828151811061154157611541614055565b50611d03816140b3565b9050611c8e565b508551604080880180516000908152600c602090815283822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9687161790558251808352848320600201558a018051925182529290206001015551611d7c9160079190612c0b16565b506040860151611d8e90600990612c0b565b5060408681015187516020808a0151845193845263ffffffff909216908301528183015290517f74becb12a5e8fd0e98077d02dfba8f647c9670c9df177e42c2418cf17a636f059181900360600190a150505050505080611dee906140b3565b9050611937565b60015473ffffffffffffffffffffffffffffffffffffffff163314611e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016105a6565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b828114611f35576040517fab8b67c600000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016105a6565b6000805473ffffffffffffffffffffffffffffffffffffffff16905b84811015612284576000868683818110611f6d57611f6d614055565b9050602002016020810190611f829190613a8a565b63ffffffff81166000908152600b602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16611fef576040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526024016105a6565b600085858481811061200357612003614055565b905060200281019061201591906141ad565b61201e906142a9565b805190915073ffffffffffffffffffffffffffffffffffffffff1661206f576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805173ffffffffffffffffffffffffffffffffffffffff1633148015906120ac57503373ffffffffffffffffffffffffffffffffffffffff851614155b156120e3576040517fef67f5d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805163ffffffff83166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff90811691161415806121a357506020808201516040516121309201613847565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012063ffffffff86166000908152600b835292909220919261218a92600101910161468a565b6040516020818303038152906040528051906020012014155b1561227157805163ffffffff83166000908152600b6020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217825582015160019091019061221790826143a4565b50806000015173ffffffffffffffffffffffffffffffffffffffff167f86f41145bde5dd7f523305452e4aad3685508c181432ec733d5f345009358a288383602001516040516122689291906144be565b60405180910390a25b50508061227d906140b3565b9050611f51565b505050505050565b604080516080808201835260008083526020808401829052838501829052606084018290528582526002808252918590208551938401865280548452600180820154928501929092529182015493949293919284019160ff16908111156122f5576122f5613d54565b600181111561230657612306613d54565b815260029190910154610100900473ffffffffffffffffffffffffffffffffffffffff1660209091015292915050565b61233e612828565b63ffffffff8087166000908152600d60205260408120546401000000009004909116908190036123a2576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff881660048201526024016105a6565b6123bc876123af83614137565b9250828888888888612c17565b50505050505050565b6123cd612828565b60005b818110156106395760008383838181106123ec576123ec614055565b9050608002018036038101906124029190614733565b805160208083015160408051808401949094528381019190915280518084038201815260609093019052815191012090915061243f60038261280d565b15612476576040517fe288638f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612481600382612c0b565b5061248c8183613182565b505080612498906140b3565b90506123d0565b606060006124ad60036133aa565b905060006124bb60056128ab565b82516124c7919061478a565b67ffffffffffffffff8111156124df576124df614108565b60405190808252806020026020018201604052801561254f57816020015b6040805160808101825260008082526020808301829052928201819052606082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816124fd5790505b5090506000805b835181101561266557600084828151811061257357612573614055565b6020026020010151905061259181600561280d90919063ffffffff16565b612654576002600082815260200190815260200160002060405180608001604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff1660018111156125eb576125eb613d54565b60018111156125fc576125fc613d54565b815260029190910154610100900473ffffffffffffffffffffffffffffffffffffffff16602090910152845185908590811061263a5761263a614055565b60200260200101819052508280612650906140b3565b9350505b5061265e816140b3565b9050612556565b50909392505050565b606080600061267d60096133aa565b90506000815167ffffffffffffffff81111561269b5761269b614108565b60405190808252806020026020018201604052801561270a57816020015b60408051608081018252600080825260208083018290529282015260608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816126b95790505b5090506000825167ffffffffffffffff81111561272957612729614108565b604051908082528060200260200182016040528015612752578160200160208202803683370190505b50905060005b83518110156127ee57600084828151811061277557612775614055565b6020026020010151905060008061278b83612b66565b91509150818685815181106127a2576127a2614055565b6020026020010181905250808585815181106127c0576127c0614055565b602002602001019063ffffffff16908163ffffffff1681525050505050806127e7906140b3565b9050612758565b509094909350915050565b612801612828565b61280a816133b7565b50565b600081815260018301602052604081205415155b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146128a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016105a6565b565b600061047c825490565b600061282183836134ac565b600061282183836134d6565b6040805160a081018252600080825260208083018290528284018290526060808401819052608084015263ffffffff8581168352600d825284832080546401000000009004909116808452600190910182528483206002810180548751818602810186019098528088529596929591949390919083018282801561297057602002820191906000526020600020905b81548152602001906001019080831161295c575b505050505090506000815167ffffffffffffffff81111561299357612993614108565b6040519080825280602002602001820160405280156129d957816020015b6040805180820190915260008152606060208201528152602001906001900390816129b15790505b50905060005b8151811015612afa576040518060400160405280848381518110612a0557612a05614055565b60200260200101518152602001856003016000868581518110612a2a57612a2a614055565b602002602001015181526020019081526020016000208054612a4b9061415a565b80601f0160208091040260200160405190810160405280929190818152602001828054612a779061415a565b8015612ac45780601f10612a9957610100808354040283529160200191612ac4565b820191906000526020600020905b815481529060010190602001808311612aa757829003601f168201915b5050505050815250828281518110612ade57612ade614055565b602002602001018190525080612af3906140b3565b90506129df565b506040805160a08101825263ffffffff8881166000818152600d6020818152868320548086168752948b168187015292909152905268010000000000000000900460ff1615159181019190915260608101612b54856133aa565b81526020019190915295945050505050565b6040805160808101825260008082526020820181905291810191909152606080820152604080516080810182526000848152600c6020908152838220805463ffffffff808216865260018301548487015260028301548688015264010000000090910416835260030190529182206060820190612be2906133aa565b90526000938452600c602052604090932054929364010000000090930463ffffffff1692915050565b600061282183836135c9565b63ffffffff8088166000908152600d60209081526040808320938a168084526001948501909252909120911015612cd65763ffffffff88166000908152600d602052604081206001908101908290612c6f908b6140eb565b63ffffffff1663ffffffff168152602001908152602001600020905060005b612c97826128ab565b811015612cd357612cc28a63ffffffff16600c600061052885876000016128b590919063ffffffff16565b50612ccc816140b3565b9050612c8e565b50505b60005b85811015612de457612d06878783818110612cf657612cf6614055565b859260209091020135905061280d565b15612d675788878783818110612d1e57612d1e614055565b6040517f636e405700000000000000000000000000000000000000000000000000000000815263ffffffff909416600485015260200291909101356024830152506044016105a6565b612d8c878783818110612d7c57612d7c614055565b8592602090910201359050612c0b565b50612dd38963ffffffff16600c60008a8a86818110612dad57612dad614055565b905060200201358152602001908152602001600020600401612c0b90919063ffffffff16565b50612ddd816140b3565b9050612cd9565b5060005b838110156130c35736858583818110612e0357612e03614055565b9050602002810190612e1591906141ad565b9050612e236003823561280d565b612e5c576040517fe181733f000000000000000000000000000000000000000000000000000000008152813560048201526024016105a6565b612e686005823561280d565b15612ea2576040517ff7d7a294000000000000000000000000000000000000000000000000000000008152813560048201526024016105a6565b8035600090815260038401602052604081208054612ebf9061415a565b90501115612f08576040517f3927d08000000000000000000000000000000000000000000000000000000000815263ffffffff8b166004820152813560248201526044016105a6565b60005b8781101561301a57612faf8235600c60008c8c86818110612f2e57612f2e614055565b9050602002013581526020019081526020016000206003016000600c60008e8e88818110612f5e57612f5e614055565b90506020020135815260200190815260200160002060000160049054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002061280d90919063ffffffff16565b61300a57888882818110612fc557612fc5614055565b6040517fa7e7925000000000000000000000000000000000000000000000000000000000815260209091029290920135600483015250823560248201526044016105a6565b613013816140b3565b9050612f0b565b50600283018054600181018255600091825260209182902083359101556130439082018261479d565b82356000908152600386016020526040902091613061919083614802565b506130b28a8a83358b8b613078602088018861479d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061361892505050565b506130bc816140b3565b9050612de8565b5063ffffffff8881166000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff1668010000000000000000881515027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff1617640100000000958d1695860217905581519283528201929092527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a15050505050505050565b606081015173ffffffffffffffffffffffffffffffffffffffff16156132d057606081015173ffffffffffffffffffffffffffffffffffffffff163b158061327b575060608101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f78bea72100000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff909116906301ffc9a790602401602060405180830381865afa158015613255573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613279919061491d565b155b156132d05760608101516040517fabb5e3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016105a6565b8060026000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083600181111561332257613322613d54565b0217905550606091909101516002909101805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff90921691909117905560405182907f04f0a9bcf3f3a3b42a4d7ca081119755f82ebe43e0d30c8f7292c4fe0dc4a2ae90600090a25050565b60606000612821836136f7565b3373ffffffffffffffffffffffffffffffffffffffff821603613436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016105a6565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008260000182815481106134c3576134c3614055565b9060005260206000200154905092915050565b600081815260018301602052604081205480156135bf5760006134fa60018361478a565b855490915060009061350e9060019061478a565b905081811461357357600086600001828154811061352e5761352e614055565b906000526020600020015490508087600001848154811061355157613551614055565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806135845761358461493a565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061047c565b600091505061047c565b60008181526001830160205260408120546136105750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561047c565b50600061047c565b60008481526002602081905260409091200154610100900473ffffffffffffffffffffffffffffffffffffffff161561228457600084815260026020819052604091829020015490517ffba64a7c00000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169063fba64a7c906136bd908690869086908b908d90600401614969565b600060405180830381600087803b1580156136d757600080fd5b505af11580156136eb573d6000803e3d6000fd5b50505050505050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561374757602002820191906000526020600020905b815481526020019060010190808311613733575b50505050509050919050565b50805461375f9061415a565b6000825580601f1061376f575050565b601f01602090049060005260206000209081019061280a91906137a7565b508054600082559060005260206000209081019061280a91905b5b808211156137bc57600081556001016137a8565b5090565b6000602082840312156137d257600080fd5b5035919050565b60005b838110156137f45781810151838201526020016137dc565b50506000910152565b600081518084526138158160208601602086016137d9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061282160208301846137fd565b60008083601f84011261386c57600080fd5b50813567ffffffffffffffff81111561388457600080fd5b6020830191508360208260051b850101111561101e57600080fd5b600080602083850312156138b257600080fd5b823567ffffffffffffffff8111156138c957600080fd5b6138d58582860161385a565b90969095509350505050565b600081518084526020808501945080840160005b83811015613911578151875295820195908201906001016138f5565b509495945050505050565b600063ffffffff8083511684526020818185015116818601526040915081840151151582860152606084015160a0606087015261395c60a08701826138e1565b9050608085015186820360808801528181518084528484019150848160051b850101858401935060005b828110156139e3578582037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00184528451805183528701518783018990526139d0898401826137fd565b9588019594880194925050600101613986565b509998505050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613a64577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613a5285835161391c565b94509285019290850190600101613a18565b5092979650505050505050565b803563ffffffff81168114613a8557600080fd5b919050565b600060208284031215613a9c57600080fd5b61282182613a71565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152613ada60408501826137fd565b949350505050565b6020815260006128216020830184613aa5565b602081526000612821602083018461391c565b60008060408385031215613b1b57600080fd5b50508035926020909101359150565b60008060408385031215613b3d57600080fd5b613b4683613a71565b946020939093013593505050565b604081526000613b6760408301856137fd565b8281036020840152613b7981856137fd565b95945050505050565b63ffffffff815116825260208101516020830152604081015160408301526000606082015160806060850152613ada60808501826138e1565b604081526000613bce6040830185613b82565b905063ffffffff831660208301529392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613a64577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452613c44858351613aa5565b94509285019290850190600101613c0a565b801515811461280a57600080fd5b600080600080600060608688031215613c7c57600080fd5b853567ffffffffffffffff80821115613c9457600080fd5b613ca089838a0161385a565b90975095506020880135915080821115613cb957600080fd5b50613cc68882890161385a565b9094509250506040860135613cda81613c56565b809150509295509295909350565b60008060008060408587031215613cfe57600080fd5b843567ffffffffffffffff80821115613d1657600080fd5b613d228883890161385a565b90965094506020870135915080821115613d3b57600080fd5b50613d488782880161385a565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8051825260208101516020830152604081015160028110613dcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b604083015260609081015173ffffffffffffffffffffffffffffffffffffffff16910152565b6080810161047c8284613d83565b60008060008060008060808789031215613e1a57600080fd5b613e2387613a71565b9550602087013567ffffffffffffffff80821115613e4057600080fd5b613e4c8a838b0161385a565b90975095506040890135915080821115613e6557600080fd5b50613e7289828a0161385a565b9094509250506060870135613e8681613c56565b809150509295509295509295565b60008060208385031215613ea757600080fd5b823567ffffffffffffffff80821115613ebf57600080fd5b818501915085601f830112613ed357600080fd5b813581811115613ee257600080fd5b8660208260071b8501011115613ef757600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015613f4b57613f38838551613d83565b9284019260809290920191600101613f25565b50909695505050505050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b83811015613fcc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552613fba868351613b82565b95509382019390820190600101613f80565b50508584038187015286518085528782019482019350915060005b8281101561400957845163ffffffff1684529381019392810192600101613fe7565b5091979650505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114613a8557600080fd5b60006020828403121561404c57600080fd5b61282182614016565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140e4576140e4614084565b5060010190565b63ffffffff82811682821603908082111561078b5761078b614084565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600063ffffffff80831681810361415057614150614084565b6001019392505050565b600181811c9082168061416e57607f821691505b6020821081036141a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141e157600080fd5b9190910192915050565b6040516080810167ffffffffffffffff8111828210171561420e5761420e614108565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561425b5761425b614108565b604052919050565b600067ffffffffffffffff82111561427d5761427d614108565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000604082360312156142bb57600080fd5b6040516040810167ffffffffffffffff82821081831117156142df576142df614108565b816040526142ec85614016565b835260209150818501358181111561430357600080fd5b8501905036601f82011261431657600080fd5b803561432961432482614263565b614214565b818152368483850101111561433d57600080fd5b81848401858301376000918101840191909152918301919091525092915050565b601f82111561063957600081815260208120601f850160051c810160208610156143855750805b601f850160051c820191505b8181101561228457828155600101614391565b815167ffffffffffffffff8111156143be576143be614108565b6143d2816143cc845461415a565b8461435e565b602080601f83116001811461442557600084156143ef5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612284565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561447257888601518255948401946001909101908401614453565b50858210156144ae57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff83168152604060208201526000613ada60408301846137fd565b6000602082840312156144ef57600080fd5b815167ffffffffffffffff81111561450657600080fd5b8201601f8101841361451757600080fd5b805161452561432482614263565b81815285602083850101111561453a57600080fd5b613b798260208301602086016137d9565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126141e157600080fd5b60006080823603121561459157600080fd5b6145996141eb565b6145a283613a71565b81526020808401358183015260408401356040830152606084013567ffffffffffffffff808211156145d357600080fd5b9085019036601f8301126145e657600080fd5b8135818111156145f8576145f8614108565b8060051b9150614609848301614214565b818152918301840191848101903684111561462357600080fd5b938501935b8385101561464157843582529385019390850190614628565b606087015250939695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613f4b5783518352928401929184019160010161466e565b600060208083526000845461469e8161415a565b808487015260406001808416600081146146bf57600181146146f757614725565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a01019550614725565b896000528660002060005b8581101561471d5781548b8201860152908301908801614702565b8a0184019650505b509398975050505050505050565b60006080828403121561474557600080fd5b61474d6141eb565b823581526020830135602082015260408301356002811061476d57600080fd5b604082015261477e60608401614016565b60608201529392505050565b8181038181111561047c5761047c614084565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126147d257600080fd5b83018035915067ffffffffffffffff8211156147ed57600080fd5b60200191503681900382131561101e57600080fd5b67ffffffffffffffff83111561481a5761481a614108565b61482e83614828835461415a565b8361435e565b6000601f841160018114614880576000851561484a5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355614916565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156148cf57868501358255602094850194600190920191016148af565b508682101561490a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60006020828403121561492f57600080fd5b815161282181613c56565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6080815284608082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8611156149a257600080fd5b8560051b808860a0850137820182810360a090810160208501526149c8908201876137fd565b91505063ffffffff8085166040840152808416606084015250969550505050505056fea164736f6c6343000813000a", } var CapabilityRegistryABI = CapabilityRegistryMetaData.ABI @@ -612,18 +612,6 @@ func (_CapabilityRegistry *CapabilityRegistryTransactorSession) TransferOwnershi return _CapabilityRegistry.Contract.TransferOwnership(&_CapabilityRegistry.TransactOpts, to) } -func (_CapabilityRegistry *CapabilityRegistryTransactor) UpdateCapabilities(opts *bind.TransactOpts, capabilities []CapabilityRegistryCapability) (*types.Transaction, error) { - return _CapabilityRegistry.contract.Transact(opts, "updateCapabilities", capabilities) -} - -func (_CapabilityRegistry *CapabilityRegistrySession) UpdateCapabilities(capabilities []CapabilityRegistryCapability) (*types.Transaction, error) { - return _CapabilityRegistry.Contract.UpdateCapabilities(&_CapabilityRegistry.TransactOpts, capabilities) -} - -func (_CapabilityRegistry *CapabilityRegistryTransactorSession) UpdateCapabilities(capabilities []CapabilityRegistryCapability) (*types.Transaction, error) { - return _CapabilityRegistry.Contract.UpdateCapabilities(&_CapabilityRegistry.TransactOpts, capabilities) -} - func (_CapabilityRegistry *CapabilityRegistryTransactor) UpdateDON(opts *bind.TransactOpts, donId uint32, nodes [][32]byte, capabilityConfigurations []CapabilityRegistryCapabilityConfiguration, isPublic bool) (*types.Transaction, error) { return _CapabilityRegistry.contract.Transact(opts, "updateDON", donId, nodes, capabilityConfigurations, isPublic) } @@ -2159,8 +2147,6 @@ type CapabilityRegistryInterface interface { TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) - UpdateCapabilities(opts *bind.TransactOpts, capabilities []CapabilityRegistryCapability) (*types.Transaction, error) - UpdateDON(opts *bind.TransactOpts, donId uint32, nodes [][32]byte, capabilityConfigurations []CapabilityRegistryCapabilityConfiguration, isPublic bool) (*types.Transaction, error) UpdateNodeOperators(opts *bind.TransactOpts, nodeOperatorIds []uint32, nodeOperators []CapabilityRegistryNodeOperator) (*types.Transaction, error) diff --git a/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt index a4d018c8c19..047ca43eff5 100644 --- a/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -1,4 +1,4 @@ GETH_VERSION: 1.13.8 forwarder: ../../../contracts/solc/v0.8.19/KeystoneForwarder/KeystoneForwarder.abi ../../../contracts/solc/v0.8.19/KeystoneForwarder/KeystoneForwarder.bin ed9164cfe4619dff824b11df46b66f4c6834b2ca072923f10d9ebc57ce508ed8 -keystone_capability_registry: ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.abi ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.bin d95781054b4491e1469038a2857372f7bbaf455a244e138880579d15bb9471c6 +keystone_capability_registry: ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.abi ../../../contracts/solc/v0.8.19/CapabilityRegistry/CapabilityRegistry.bin 1f2fce43c4809b7df4296b4c8aa08009646b1038973dee755a91e6ff7c57dfe2 ocr3_capability: ../../../contracts/solc/v0.8.19/OCR3Capability/OCR3Capability.abi ../../../contracts/solc/v0.8.19/OCR3Capability/OCR3Capability.bin 9dcbdf55bd5729ba266148da3f17733eb592c871c2108ccca546618628fd9ad2