diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 9ed0bdb38..ea7ca8c44 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -37,6 +37,17 @@ type ConversionData struct { InitialValidators []InitialValidator } +// Delegator is an auto generated low-level Go binding around an user-defined struct. +type Delegator struct { + Status uint8 + Owner common.Address + ValidationID [32]byte + Weight uint64 + StartedAt uint64 + StartingNonce uint64 + EndingNonce uint64 +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -50,6 +61,14 @@ type PChainOwner struct { Addresses []common.Address } +// PoSValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type PoSValidatorInfo struct { + Owner common.Address + DelegationFeeBips uint16 + MinStakeDuration uint64 + UptimeSeconds uint64 +} + // PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type PoSValidatorManagerSettings struct { BaseSettings ValidatorManagerSettings @@ -111,8 +130,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettings\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"initialWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"totalWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161622f38038061622f83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6160e28061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610260575f3560e01c806380dd672f1161014b578063afb98096116100bf578063c974d1b611610084578063c974d1b614610629578063d5f20ff614610631578063df93d8de14610651578063e4a63c401461065b578063fb8b11dd1461066f578063fd7ac5e714610682575f80fd5b8063afb98096146105ba578063b771b3bc146105e1578063ba3a4b97146105ef578063bc5fbfec14610602578063bee0a03f14610616575f80fd5b80639ae06447116101105780639ae06447146104a25780639e1bc4ef146104b55780639e478eea146104c8578063a3a65e48146104db578063a8099af2146104ee578063a9778a7a1461030f575f80fd5b806380dd672f1461044c5780638280a25a1461045f57806385b4bb53146104675780638ef34c981461047c57806393e245981461048f575f80fd5b8063467ef06f116101e257806362065856116101a757806362065856146103c857806366435abf146103db578063732214f8146103ee57806376f78621146103f5578063785e9e86146104085780637d8d2f7714610439575f80fd5b8063467ef06f146103515780634bee0040146103645780635dd6a6cb1461038557806360305d621461039857806360ad7784146103b5575f80fd5b806325e1c7761161022857806325e1c776146102d15780632e2194d8146102e457806335455ded1461030f57806337b9be8f1461032b5780633a1cfff61461033e575f80fd5b80630118acc4146102645780630322ed9814610279578063151d30d11461028c5780631ec44724146102ab57806320d91b7a146102be575b5f80fd5b610277610272366004614f6d565b610695565b005b610277610287366004614fa8565b6106a6565b610294600a81565b60405160ff90911681526020015b60405180910390f35b6102776102b9366004614f6d565b610936565b6102776102cc366004614fbf565b610942565b6102776102df36600461500d565b610ef8565b6102f76102f2366004614fa8565b610f6c565b6040516001600160401b0390911681526020016102a2565b61031861271081565b60405161ffff90911681526020016102a2565b610277610339366004615042565b610fc0565b61027761034c366004614f6d565b610fd3565b61027761035f366004615090565b610fdf565b6103776103723660046150ce565b6110b1565b6040519081526020016102a2565b610277610393366004615042565b6110e6565b6103a0601481565b60405163ffffffff90911681526020016102a2565b6102776103c336600461500d565b6110f2565b6103776103d6366004615135565b6113ba565b6102f76103e9366004614fa8565b6113da565b6103775f81565b610277610403366004614f6d565b6113ee565b5f8051602061602d833981519152546001600160a01b03165b6040516001600160a01b0390911681526020016102a2565b610277610447366004615042565b6113fa565b61027761045a36600461500d565b611406565b610294603081565b61046f611640565b6040516102a29190615150565b61027761048a366004615209565b611735565b61027761049d366004614fa8565b6117e6565b6102776104b0366004615042565b61187a565b6103776104c3366004615237565b611886565b6102776104d6366004615257565b6118b2565b6102776104e9366004615090565b611991565b60408051608080820183525f8083526020808401829052838501829052606093840191909152835180830185527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb02548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03546001600160401b03808216848601908152600160401b83048216858a01908152600160801b909304821694880194855288519384525181169483019490945251831695810195909552511691830191909152016102a2565b6103777f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6104216005600160991b0181565b6102776105fd366004614fa8565b611b87565b6103775f8051602061604d83398151915281565b610277610624366004614fa8565b611de0565b610294601481565b61064461063f366004614fa8565b611f1c565b6040516102a291906152ff565b6102f76202a30081565b6103775f8051602061602d83398151915281565b61027761067d366004615209565b61206b565b61037761069036600461537f565b612102565b6106a18383835f61215d565b505050565b5f8181525f8051602061606d8339815191526020526040808220815160e0810190925280545f8051602061604d83398151915293929190829060ff1660058111156106f3576106f361528a565b60058111156107045761070461528a565b8152602001600182018054610718906153ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610744906153ea565b801561078f5780601f106107665761010080835404028352916020019161078f565b820191905f5260205f20905b81548152906001019060200180831161077257829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156107fa576107fa61528a565b14610836575f8381526005830160205260409081902054905163170cc93360e21b815261082d9160ff1690600401615422565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156108ad573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108d4919081019061552b565b6040518263ffffffff1660e01b81526004016108f0919061555c565b6020604051808303815f875af115801561090c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610930919061556e565b50505050565b6109308383835f612189565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f8051602061604d8339815191529060ff161561099457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109fb919061556e565b836020013514610a24576040516372b0a7e760e11b81526020840135600482015260240161082d565b30610a356060850160408601615585565b6001600160a01b031614610a7857610a536060840160408501615585565b604051632f88120d60e21b81526001600160a01b03909116600482015260240161082d565b5f610a8660608501856155a0565b905090505f805b828163ffffffff161015610cee575f610aa960608801886155a0565b8363ffffffff16818110610abf57610abf6155e5565b9050602002810190610ad191906155f9565b610ada90615664565b80516040519192505f916006880191610af2916156df565b90815260200160405180910390205414610b2257805160405163a41f772f60e01b815261082d919060040161555c565b5f6002885f013584604051602001610b5192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610b6b916156df565b602060405180830381855afa158015610b86573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ba9919061556e565b90508086600601835f0151604051610bc191906156df565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610c019082615734565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610c819085615803565b8251604051919550610c92916156df565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610ce790615823565b9050610a8d565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610d31910460ff1683615845565b6001600160401b03161015610d6457604051633e1a785160e01b81526001600160401b038216600482015260240161082d565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610d88876124b6565b604001516040518263ffffffff1660e01b8152600401610da8919061555c565b602060405180830381865af4158015610dc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de7919061556e565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610e21919061599b565b5f60405180830381865af4158015610e3b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e62919081019061552b565b90505f600282604051610e7591906156df565b602060405180830381855afa158015610e90573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610eb3919061556e565b9050828114610edf5760405163baaea89d60e01b8152600481018290526024810184905260440161082d565b5050506007909201805460ff1916600117905550505050565b610f01826125cc565b610f21576040516330efa98b60e01b81526004810183905260240161082d565b5f610f2b83611f1c565b5190506002816005811115610f4257610f4261528a565b14610f62578060405163170cc93360e21b815260040161082d9190615422565b61093083836125f5565b5f80610f76612894565b60030154610f849084615a2f565b9050801580610f9957506001600160401b0381115b15610fba5760405163222d164360e21b81526004810184905260240161082d565b92915050565b610fcc84848484612189565b5050505050565b6109308383835f6128b8565b610fe7612af5565b5f610ff0612894565b90505f80610ffd84612b2c565b9150915061100a826125cc565b61101657505050611098565b5f828152600684016020908152604080832054600b870190925290912080546001600160a01b031981169091556001600160a01b039182169116806110585750805b60048351600581111561106d5761106d61528a565b0361107c5761107c8185612ee4565b6110928261108d85604001516113ba565b612f0e565b50505050505b6110ae60015f8051602061608d83398151915255565b50565b5f6110ba612af5565b6110c685858585612f44565b90506110de60015f8051602061608d83398151915255565b949350505050565b610930848484846130c4565b5f6110fb612894565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156111345761113461528a565b60038111156111455761114561528a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6111bb82611f1c565b90506001835160038111156111d2576111d261528a565b146111f3578251604051633b0d540d60e21b815261082d9190600401615a4e565b6004815160058111156112085761120861528a565b0361121e57611216866130f0565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611243896124b6565b604001516040518263ffffffff1660e01b8152600401611263919061555c565b606060405180830381865af415801561127e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a29190615a68565b50915091508184146112cf57846040015160405163089938b360e11b815260040161082d91815260200190565b806001600160401b031683606001516001600160401b031610806113085750806001600160401b03168560a001516001600160401b0316115b1561133157604051632e19bc2d60e11b81526001600160401b038216600482015260240161082d565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6113c3612894565b60030154610fba906001600160401b038416615aa8565b5f6113e482611f1c565b6080015192915050565b6106a18383835f6130c4565b610fcc848484846128b8565b61140e612af5565b5f611417612894565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156114505761145061528a565b60038111156114615761146161528a565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156114da576114da61528a565b146114fb578051604051633b0d540d60e21b815261082d9190600401615a4e565b600461150a8260400151611f1c565b51600581111561151c5761151c61528a565b1461161b575f61152b846124b6565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161156a919061555c565b606060405180830381865af4158015611585573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a99190615a68565b5091509150818460400151146115d55760405163089938b360e11b81526004810183905260240161082d565b806001600160401b03168460c001516001600160401b0316111561161757604051632e19bc2d60e11b81526001600160401b038216600482015260240161082d565b5050505b611624846130f0565b505061163c60015f8051602061608d83398151915255565b5050565b60408051610180810182525f610120820181815261014083018290526101608301829052825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052906116a7612894565b90506040518061012001604052806116bd6132c5565b8152825460208201526001830154604082015260028301546001600160401b0381166060830152600160401b810461ffff166080830152600160501b900460ff1660a0820152600383015460c082015260048301546001600160a01b031660e082015260059092015461010090920191909152919050565b5f61173e612894565b90506001600160a01b0382166117725760405163caa903f960e01b81526001600160a01b038316600482015260240161082d565b5f8381526006820160205260409020546001600160a01b031633146117b857335b604051636e2ccd7560e11b81526001600160a01b03909116600482015260240161082d565b5f928352600b01602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b5f6117ef612894565b90505f6117fb83611f1c565b51905060048160058111156118125761181261528a565b14611832578060405163170cc93360e21b815260040161082d9190615422565b5f8381526006830160205260409020546001600160a01b031633146118575733611793565b5f8381526006830160205260409020546106a1906001600160a01b031684612ee4565b6109308484848461215d565b5f61188f612af5565b61189a833384613326565b9050610fba60015f8051602061608d83398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806118fb575080546001600160401b03808416911610155b156119195760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556119448484613564565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f8051602061604d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6119c4866124b6565b604001516040518263ffffffff1660e01b81526004016119e4919061555c565b6040805180830381865af41580156119fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a229190615abf565b9150915080611a4857604051632d07135360e01b8152811515600482015260240161082d565b5f82815260048401602052604090208054611a62906153ea565b90505f03611a865760405163089938b360e11b81526004810183905260240161082d565b60015f838152600580860160205260409091205460ff1690811115611aad57611aad61528a565b14611ae0575f8281526005840160205260409081902054905163170cc93360e21b815261082d9160ff1690600401615422565b5f8281526004840160205260408120611af891614ebc565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f611b90612894565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611bc957611bc961528a565b6003811115611bda57611bda61528a565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611c5357611c5361528a565b14158015611c745750600381516003811115611c7157611c7161528a565b14155b15611c95578051604051633b0d540d60e21b815261082d9190600401615a4e565b5f611ca38260400151611f1c565b905080606001516001600160401b03165f03611cd5576040516339b894f960e21b81526004810185905260240161082d565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611d4393906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611d5d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d84919081019061552b565b6040518263ffffffff1660e01b8152600401611da0919061555c565b6020604051808303815f875af1158015611dbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcc919061556e565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f8051602061604d8339815191529190611e27906153ea565b90505f03611e4b5760405163089938b360e11b81526004810183905260240161082d565b60015f838152600580840160205260409091205460ff1690811115611e7257611e7261528a565b14611ea5575f8281526005820160205260409081902054905163170cc93360e21b815261082d9160ff1690600401615422565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92611edc9201615ae2565b6020604051808303815f875af1158015611ef8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a1919061556e565b611f24614ef3565b5f8281525f8051602061606d833981519152602052604090819020815160e0810190925280545f8051602061604d833981519152929190829060ff166005811115611f7157611f7161528a565b6005811115611f8257611f8261528a565b8152602001600182018054611f96906153ea565b80601f0160208091040260200160405190810160405280929190818152602001828054611fc2906153ea565b801561200d5780601f10611fe45761010080835404028352916020019161200d565b820191905f5260205f20905b815481529060010190602001808311611ff057829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b03811661209d5760405163caa903f960e01b81526001600160a01b038216600482015260240161082d565b5f6120a6612894565b5f8481526007820160205260409020549091506001600160a01b036101009091041633146120d45733611793565b5f928352600901602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6040515f905f8051602061604d833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906121459086908690615b6c565b90815260200160405180910390205491505092915050565b61216984848484612189565b61093057604051631036cf9160e11b81526004810185905260240161082d565b5f80612193612894565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121cc576121cc61528a565b60038111156121dd576121dd61528a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61225382611f1c565b905060028351600381111561226a5761226a61528a565b1461228b578251604051633b0d540d60e21b815261082d9190600401615a4e565b60208301516001600160a01b03163314612327575f8281526006850160205260409020546001600160a01b031633146122c45733611793565b5f82815260068501602052604090205460a08201516122f391600160b01b90046001600160401b031690615803565b6001600160401b03164210156123275760405163fb6ce63f60e01b81526001600160401b034216600482015260240161082d565b60028151600581111561233c5761233c61528a565b0361245e576002840154608084015161235e916001600160401b031690615803565b6001600160401b03164210156123925760405163fb6ce63f60e01b81526001600160401b034216600482015260240161082d565b87156123a4576123a282886125f5565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516123dd9184916123d89190615b7b565b61357e565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561242084888c613755565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506110de9350505050565b6004815160058111156124735761247361528a565b0361249a5761248383878b613755565b5061248d896130f0565b60019450505050506110de565b805160405163170cc93360e21b815261082d9190600401615422565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561251a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125419190810190615b9b565b915091508061256357604051636b2f19e960e01b815260040160405180910390fd5b815115612589578151604051636ba589a560e01b8152600481019190915260240161082d565b60208201516001600160a01b0316156125c5576020820151604051624de75d60e31b81526001600160a01b03909116600482015260240161082d565b5092915050565b5f806125d6612894565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612640573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526126679190810190615b9b565b915091508061268957604051636b2f19e960e01b815260040160405180910390fd5b5f612692612894565b60058101548451919250146126c0578251604051636ba589a560e01b8152600481019190915260240161082d565b60208301516001600160a01b0316156126fc576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161082d565b60208301516001600160a01b031615612738576020830151604051624de75d60e31b81526001600160a01b03909116600482015260240161082d565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401612775919061555c565b6040805180830381865af415801561278f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b39190615c2b565b915091508188146127da5760405163089938b360e11b81526004810189905260240161082d565b5f8881526006840160205260409020600101546001600160401b03908116908216111561286b575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612889565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806128c2612894565b90505f6128ce87613943565b90506128d9876125cc565b6128e8576001925050506110de565b5f8781526006830160205260409020546001600160a01b0316331461290d5733611793565b5f87815260068301602052604090205460a082015161293c91600160b01b90046001600160401b031690615803565b6001600160401b03168160c001516001600160401b031610156129835760c081015160405163fb6ce63f60e01b81526001600160401b03909116600482015260240161082d565b5f861561299b5761299488876125f5565b90506129b9565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906129de906113ba565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612a47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a6b919061556e565b90506001600160a01b038616612a97575f8981526006850160205260409020546001600160a01b031695505b5f898152600a8501602052604081208054839290612ab6908490615c4e565b90915550505f898152600b909401602052604090932080546001600160a01b0387166001600160a01b0319909116179055505015159050949350505050565b5f8051602061608d833981519152805460011901612b2657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612b35614ef3565b5f8051602061604d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612b68886124b6565b604001516040518263ffffffff1660e01b8152600401612b88919061555c565b6040805180830381865af4158015612ba2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc69190615abf565b915091508015612bed57604051632d07135360e01b8152811515600482015260240161082d565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612c2457612c2461528a565b6005811115612c3557612c3561528a565b8152602001600182018054612c49906153ea565b80601f0160208091040260200160405190810160405280929190818152602001828054612c75906153ea565b8015612cc05780601f10612c9757610100808354040283529160200191612cc0565b820191905f5260205f20905b815481529060010190602001808311612ca357829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612d2b57612d2b61528a565b14158015612d4c5750600181516005811115612d4957612d4961528a565b14155b15612d6d57805160405163170cc93360e21b815261082d9190600401615422565b600381516005811115612d8257612d8261528a565b03612d905760048152612d95565b600581525b836006018160200151604051612dab91906156df565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115612dee57612dee61528a565b021790555060208201516001820190612e079082615734565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612ead57612ead61528a565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612eed612894565b5f838152600a82016020526040812080549190559091506109308482613c28565b5f8051602061602d8339815191525461163c906001600160a01b03168383613c9e565b60015f8051602061608d83398151915255565b5f80612f4e612894565b600281015490915061ffff600160401b90910481169086161080612f77575061271061ffff8616115b15612f9b57604051635f12e6c360e11b815261ffff8616600482015260240161082d565b60028101546001600160401b039081169085161015612fd7576040516202a06d60e11b81526001600160401b038516600482015260240161082d565b8054831080612fe95750806001015483115b1561300a5760405163222d164360e21b81526004810184905260240161082d565b5f61301484613cfd565b90505f61302082610f6c565b90505f61302d8983613d20565b5f818152600686016020908152604080832080546001600160401b039c909c16600160b01b0267ffffffffffffffff60b01b1961ffff9e909e16600160a01b02336001600160b01b0319909e168e17179d909d169c909c178c556001909b01805467ffffffffffffffff19169055600b9096019095529790932080546001600160a01b031916909617909555509395945050505050565b6130d0848484846128b8565b61093057604051635bff683f60e11b81526004810185905260240161082d565b5f6130f9612894565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156131325761313261528a565b60038111156131435761314361528a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506131b76132c5565b6020015182608001516131ca9190615803565b6001600160401b03164210156131fe5760405163fb6ce63f60e01b81526001600160401b034216600482015260240161082d565b5f848152600784016020908152604080832080546001600160a81b03191681556001810184905560020183905560098601909152902080546001600160a01b031981169091556001600160a01b031680613259575060208201515b5f80613266838886614292565b9150915061327f856020015161108d87606001516113ba565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b604080516060810182525f80825260208201819052918101829052905f8051602061604d83398151915260408051606081018252825481526001909201546001600160401b0381166020840152600160401b900460ff169082015292915050565b5f80613330612894565b90505f61333f6102f285613cfd565b90505f61334b87611f1c565b9050613356876125cc565b613376576040516330efa98b60e01b81526004810188905260240161082d565b60028151600581111561338b5761338b61528a565b146133ac57805160405163170cc93360e21b815261082d9190600401615422565b5f8282608001516133bd9190615803565b600285015460408401519192506133df91600160501b90910460ff1690615845565b6001600160401b0316816001600160401b0316111561341c57604051636d51fe0560e11b81526001600160401b038216600482015260240161082d565b5f806134288a8461357e565b915091505f8a8360405160200161345692919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b61356c61433f565b6135758261438a565b61163c81614404565b5f8281525f8051602061606d833981519152602052604081206002015481905f8051602061604d83398151915290600160801b90046001600160401b03166135c6858261446c565b5f6135d0876146d6565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613679573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136a0919081019061552b565b6040518263ffffffff1660e01b81526004016136bc919061555c565b6020604051808303815f875af11580156136d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136fc919061556e565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061375f612894565b90505f61376f8660400151611f1c565b90505f6003825160058111156137875761378761528a565b14806137a557506004825160058111156137a3576137a361528a565b145b156137b5575060c08101516137f2565b6002825160058111156137ca576137ca61528a565b036137d65750426137f2565b815160405163170cc93360e21b815261082d9190600401615422565b86608001516001600160401b0316816001600160401b03161161381a575f935050505061355d565b600483015460608801515f916001600160a01b031690634f22429f9061383f906113ba565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156138c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138e4919061556e565b90506001600160a01b0387166138fc57876020015196505b5f8681526008850160209081526040808320849055600990960190529390932080546001600160a01b0388166001600160a01b031990911617905550909150509392505050565b61394b614ef3565b5f8281525f8051602061606d8339815191526020526040808220815160e0810190925280545f8051602061604d83398151915293929190829060ff1660058111156139985761399861528a565b60058111156139a9576139a961528a565b81526020016001820180546139bd906153ea565b80601f01602080910402602001604051908101604052809291908181526020018280546139e9906153ea565b8015613a345780601f10613a0b57610100808354040283529160200191613a34565b820191905f5260205f20905b815481529060010190602001808311613a1757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613aa257613aa261528a565b14613ad5575f8481526005830160205260409081902054905163170cc93360e21b815261082d9160ff1690600401615422565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff1916906001908490811115613b1a57613b1a61528a565b021790555060208201516001820190613b339082615734565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613bd1858261357e565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b5f5f8051602061602d83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613c83575f80fd5b505af1158015613c95573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b038381166024830152604482018390526106a191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061474b565b5f610fba825f8051602061602d833981519152546001600160a01b0316906147ac565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16613d6457604051637fab81e560e01b815260040160405180910390fd5b5f8051602061604d83398151915242613d836060860160408701615135565b6001600160401b0316111580613dbd5750613da16202a30042615c4e565b613db16060860160408701615135565b6001600160401b031610155b15613df757613dd26060850160408601615135565b604051635879da1360e11b81526001600160401b03909116600482015260240161082d565b60038101546001600160401b0390613e1a90600160401b90048216858316615c4e565b1115613e4457604051633e1a785160e01b81526001600160401b038416600482015260240161082d565b613e59613e546060860186615c61565b6147b8565b613e69613e546080860186615c61565b6030613e786020860186615c75565b905014613eaa57613e8c6020850185615c75565b6040516326475b2f60e11b815261082d925060040190815260200190565b613eb48480615c75565b90505f03613ee157613ec68480615c75565b604051633e08a12560e11b815260040161082d929190615cb7565b5f60068201613ef08680615c75565b604051613efe929190615b6c565b90815260200160405180910390205414613f3757613f1c8480615c75565b60405163a41f772f60e01b815260040161082d929190615cb7565b613f41835f61446c565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613f7e8a80615c75565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613fc6908b018b615c75565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161400f60608b0160408c01615135565b6001600160401b0316815260200161402a60608b018b615c61565b61403390615cca565b815260200161404560808b018b615c61565b61404e90615cca565b8152602001886001600160401b03168152506040518263ffffffff1660e01b815260040161407c9190615df7565b5f60405180830381865af4158015614096573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526140bd9190810190615eae565b5f828152600486016020526040902091935091506140db8282615734565b5081600684016140eb8880615c75565b6040516140f9929190615b6c565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061413590859060040161555c565b6020604051808303815f875af1158015614151573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614175919061556e565b5f8481526005860160205260409020805460ff19166001179055905061419b8780615c75565b5f8581526005870160205260409020600101916141b9919083615ef1565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff19169055806142188880615c75565b604051614226929190615b6c565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b60400160208101906142649190615135565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f61429d612894565b5f86815260088201602052604081208054908290559192509081908015614331575f878152600685016020526040902054612710906142e790600160a01b900461ffff1683615aa8565b6142f19190615a2f565b91508184600a015f8981526020019081526020015f205f8282546143159190615c4e565b9091555061432590508282615faa565b92506143318984613c28565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661438857604051631afcd79f60e31b815260040160405180910390fd5b565b61439261433f565b61439b81614921565b6143a361493a565b6110ae606082013560808301356143c060c0850160a08601615135565b6143d060e0860160c08701615fbd565b6143e1610100870160e08801615fd6565b6101008701356143f961014089016101208a01615585565b88610140013561494a565b61440c61433f565b5f8051602061602d8339815191526001600160a01b03821661444c57604051637330680360e01b81526001600160a01b038316600482015260240161082d565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f8051602061604d8339815191525f6001600160401b0380841690851611156144a0576144998385615b7b565b90506144ad565b6144aa8484615b7b565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b900490921660608201524291158061451a575060018401548151614516916001600160401b031690615c4e565b8210155b15614542576001600160401b0380841660608301528282526040820151166020820152614561565b82816060018181516145549190615803565b6001600160401b03169052505b6060810151614571906064615845565b602082015160018601546001600160401b03929092169161459c9190600160401b900460ff16615845565b6001600160401b031610156145d557606081015160405163dfae880160e01b81526001600160401b03909116600482015260240161082d565b85816040018181516145e79190615803565b6001600160401b0316905250604081018051869190614607908390615b7b565b6001600160401b03169052506001840154604082015160649161463591600160401b90910460ff1690615845565b6001600160401b0316101561466e576040808201519051633e1a785160e01b81526001600160401b03909116600482015260240161082d565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f8051602061606d8339815191526020526040812060020180545f8051602061604d833981519152919060089061472090600160401b90046001600160401b0316615ff6565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f61475f6001600160a01b03841683614b07565b905080515f141580156147835750808060200190518101906147819190616011565b155b156106a157604051635274afe760e01b81526001600160a01b038416600482015260240161082d565b5f61355d833384614b14565b6147c56020820182615090565b63ffffffff161580156147e557506147e060208201826155a0565b151590505b1561482c576147f76020820182615090565b61480460208301836155a0565b60405163c08a0f1d60e01b815263ffffffff909316600484015260248301525060440161082d565b61483960208201826155a0565b90506148486020830183615090565b63ffffffff161115614861576147f76020820182615090565b60015b61487160208301836155a0565b905081101561163c5761488760208301836155a0565b614892600184615faa565b8181106148a1576148a16155e5565b90506020020160208101906148b69190615585565b6001600160a01b03166148cc60208401846155a0565b838181106148dc576148dc6155e5565b90506020020160208101906148f19190615585565b6001600160a01b0316101561491957604051630dbc8d5f60e31b815260040160405180910390fd5b600101614864565b61492961433f565b614931614c77565b6110ae81614c7f565b61494261433f565b614388614d67565b61495261433f565b5f61495b612894565b905061ffff86161580614973575061271061ffff8716115b1561499757604051635f12e6c360e11b815261ffff8716600482015260240161082d565b878911156149bb5760405163222d164360e21b8152600481018a905260240161082d565b60ff851615806149ce5750600a60ff8616115b156149f15760405163170db35960e31b815260ff8616600482015260240161082d565b6149f96132c5565b602001516001600160401b0316876001600160401b03161015614a39576040516202a06d60e11b81526001600160401b038816600482015260240161082d565b835f03614a595760405163a733007160e01b815260040160405180910390fd5b81614a7a57604051632f6bd1db60e01b81526004810183905260240161082d565b978855600188019690965560028701805460ff909416600160501b0260ff60501b1961ffff909616600160401b0269ffffffffffffffffffff199095166001600160401b0390971696909617939093179390931693909317905560038401919091556004830180546001600160a01b039092166001600160a01b0319909216919091179055600590910155565b606061355d83835f614d6f565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015614b5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b7e919061556e565b9050614b956001600160a01b038616853086614dfe565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614bd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614bfd919061556e565b9050818111614c635760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b606482015260840161082d565b614c6d8282615faa565b9695505050505050565b61438861433f565b614c8761433f565b80355f8051602061604d8339815191529081556014614cac6060840160408501615fd6565b60ff161180614ccb5750614cc66060830160408401615fd6565b60ff16155b15614cff57614ce06060830160408401615fd6565b604051634a59bbff60e11b815260ff909116600482015260240161082d565b614d0f6060830160408401615fd6565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614d406040830160208401615135565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612f3161433f565b606081471015614d945760405163cd78605960e01b815230600482015260240161082d565b5f80856001600160a01b03168486604051614daf91906156df565b5f6040518083038185875af1925050503d805f8114614de9576040519150601f19603f3d011682016040523d82523d5f602084013e614dee565b606091505b5091509150614c6d868383614e37565b6040516001600160a01b0384811660248301528381166044830152606482018390526109309186918216906323b872dd90608401613ccb565b606082614e4c57614e4782614e93565b61355d565b8151158015614e6357506001600160a01b0384163b155b15614e8c57604051639996b31560e01b81526001600160a01b038516600482015260240161082d565b508061355d565b805115614ea35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614ec8906153ea565b5f825580601f10614ed7575050565b601f0160209004905f5260205f20908101906110ae9190614f30565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614f44575f8155600101614f31565b5090565b80151581146110ae575f80fd5b803563ffffffff81168114614f68575f80fd5b919050565b5f805f60608486031215614f7f575f80fd5b833592506020840135614f9181614f48565b9150614f9f60408501614f55565b90509250925092565b5f60208284031215614fb8575f80fd5b5035919050565b5f8060408385031215614fd0575f80fd5b82356001600160401b03811115614fe5575f80fd5b830160808186031215614ff6575f80fd5b915061500460208401614f55565b90509250929050565b5f806040838503121561501e575f80fd5b8235915061500460208401614f55565b6001600160a01b03811681146110ae575f80fd5b5f805f8060808587031215615055575f80fd5b84359350602085013561506781614f48565b925061507560408601614f55565b915060608501356150858161502e565b939692955090935050565b5f602082840312156150a0575f80fd5b61355d82614f55565b803561ffff81168114614f68575f80fd5b6001600160401b03811681146110ae575f80fd5b5f805f80608085870312156150e1575f80fd5b84356001600160401b038111156150f6575f80fd5b850160a08188031215615107575f80fd5b9350615115602086016150a9565b92506040850135615125816150ba565b9396929550929360600135925050565b5f60208284031215615145575f80fd5b813561355d816150ba565b5f610160820190508251805183526001600160401b03602082015116602084015260ff604082015116604084015250602083015160608301526040830151608083015260608301516151ad60a08401826001600160401b03169052565b50608083015161ffff811660c08401525060a083015160ff811660e08401525060c0830151610100818185015260e085015191506151f76101208501836001600160a01b03169052565b80850151610140850152505092915050565b5f806040838503121561521a575f80fd5b82359150602083013561522c8161502e565b809150509250929050565b5f8060408385031215615248575f80fd5b50508035926020909101359150565b5f8082840361018081121561526a575f80fd5b61016080821215615279575f80fd5b849350830135905061522c8161502e565b634e487b7160e01b5f52602160045260245ffd5b600681106152ae576152ae61528a565b9052565b5f5b838110156152cc5781810151838201526020016152b4565b50505f910152565b5f81518084526152eb8160208601602086016152b2565b601f01601f19169290920160200192915050565b6020815261531160208201835161529e565b5f602083015160e0604084015261532c6101008401826152d4565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215615390575f80fd5b82356001600160401b03808211156153a6575f80fd5b818501915085601f8301126153b9575f80fd5b8135818111156153c7575f80fd5b8660208285010111156153d8575f80fd5b60209290920196919550909350505050565b600181811c908216806153fe57607f821691505b60208210810361541c57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610fba828461529e565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561546657615466615430565b60405290565b604080519081016001600160401b038111828210171561546657615466615430565b604051601f8201601f191681016001600160401b03811182821017156154b6576154b6615430565b604052919050565b5f6001600160401b038211156154d6576154d6615430565b50601f01601f191660200190565b5f82601f8301126154f3575f80fd5b8151615506615501826154be565b61548e565b81815284602083860101111561551a575f80fd5b6110de8260208301602087016152b2565b5f6020828403121561553b575f80fd5b81516001600160401b03811115615550575f80fd5b6110de848285016154e4565b602081525f61355d60208301846152d4565b5f6020828403121561557e575f80fd5b5051919050565b5f60208284031215615595575f80fd5b813561355d8161502e565b5f808335601e198436030181126155b5575f80fd5b8301803591506001600160401b038211156155ce575f80fd5b6020019150600581901b360382131561374e575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261560d575f80fd5b9190910192915050565b5f82601f830112615626575f80fd5b8135615634615501826154be565b818152846020838601011115615648575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615674575f80fd5b61567c615444565b82356001600160401b0380821115615692575f80fd5b61569e36838701615617565b835260208501359150808211156156b3575f80fd5b506156c036828601615617565b60208301525060408301356156d4816150ba565b604082015292915050565b5f825161560d8184602087016152b2565b601f8211156106a157805f5260205f20601f840160051c810160208510156157155750805b601f840160051c820191505b81811015610fcc575f8155600101615721565b81516001600160401b0381111561574d5761574d615430565b6157618161575b84546153ea565b846156f0565b602080601f831160018114615794575f841561577d5750858301515b5f19600386901b1c1916600185901b178555611216565b5f85815260208120601f198616915b828110156157c2578886015182559484019460019091019084016157a3565b50858210156157df57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156125c5576125c56157ef565b5f63ffffffff80831681810361583b5761583b6157ef565b6001019392505050565b6001600160401b03818116838216028082169190828114615868576158686157ef565b505092915050565b5f808335601e19843603018112615885575f80fd5b83016020810192503590506001600160401b038111156158a3575f80fd5b80360382131561374e575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561598e57848303601f19018952813536889003605e19018112615915575f80fd5b870160606159238280615870565b82875261593383880182846158b1565b9250505061594386830183615870565b868303888801526159558382846158b1565b92505050604080830135925061596a836150ba565b6001600160401b0392909216949091019390935297830197908301906001016158f0565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356159bf8161502e565b6001600160a01b031660608381019190915283013536849003601e190181126159e6575f80fd5b83016020810190356001600160401b03811115615a01575f80fd5b8060051b3603821315615a12575f80fd5b608080850152615a2660a0850182846158d9565b95945050505050565b5f82615a4957634e487b7160e01b5f52601260045260245ffd5b500490565b6020810160048310615a6257615a6261528a565b91905290565b5f805f60608486031215615a7a575f80fd5b835192506020840151615a8c816150ba565b6040850151909250615a9d816150ba565b809150509250925092565b8082028115828204841417610fba57610fba6157ef565b5f8060408385031215615ad0575f80fd5b82519150602083015161522c81614f48565b5f60208083525f8454615af4816153ea565b806020870152604060018084165f8114615b155760018114615b3157615b5e565b60ff19851660408a0152604084151560051b8a01019550615b5e565b895f5260205f205f5b85811015615b555781548b8201860152908301908801615b3a565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038281168282160390808211156125c5576125c56157ef565b5f8060408385031215615bac575f80fd5b82516001600160401b0380821115615bc2575f80fd5b9084019060608287031215615bd5575f80fd5b615bdd615444565b825181526020830151615bef8161502e565b6020820152604083015182811115615c05575f80fd5b615c11888286016154e4565b604083015250809450505050602083015161522c81614f48565b5f8060408385031215615c3c575f80fd5b82519150602083015161522c816150ba565b80820180821115610fba57610fba6157ef565b5f8235603e1983360301811261560d575f80fd5b5f808335601e19843603018112615c8a575f80fd5b8301803591506001600160401b03821115615ca3575f80fd5b60200191503681900382131561374e575f80fd5b602081525f6110de6020830184866158b1565b5f60408236031215615cda575f80fd5b615ce261546c565b615ceb83614f55565b81526020808401356001600160401b0380821115615d07575f80fd5b9085019036601f830112615d19575f80fd5b813581811115615d2b57615d2b615430565b8060051b9150615d3c84830161548e565b8181529183018401918481019036841115615d55575f80fd5b938501935b83851015615d7f5784359250615d6f8361502e565b8282529385019390850190615d5a565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615dec5784516001600160a01b03168252938301936001929092019190830190615dc3565b509695505050505050565b60208152815160208201525f602083015160e06040840152615e1d6101008401826152d4565b90506040840151601f1980858403016060860152615e3b83836152d4565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615e6b8383615d91565b925060a08601519150808584030160c086015250615e898282615d91565b91505060c0840151615ea660e08501826001600160401b03169052565b509392505050565b5f8060408385031215615ebf575f80fd5b8251915060208301516001600160401b03811115615edb575f80fd5b615ee7858286016154e4565b9150509250929050565b6001600160401b03831115615f0857615f08615430565b615f1c83615f1683546153ea565b836156f0565b5f601f841160018114615f4d575f8515615f365750838201355b5f19600387901b1c1916600186901b178355610fcc565b5f83815260208120601f198716915b82811015615f7c5786850135825560209485019460019092019101615f5c565b5086821015615f98575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610fba57610fba6157ef565b5f60208284031215615fcd575f80fd5b61355d826150a9565b5f60208284031215615fe6575f80fd5b813560ff8116811461355d575f80fd5b5f6001600160401b0380831681810361583b5761583b6157ef565b5f60208284031215616021575f80fd5b815161355d81614f4856fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122057f9eaa77bd16eba534d3c2e5288445ae11d002e84a5481dd97ac2fdfbdfede064736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getDelegator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startingNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endingNonce\",\"type\":\"uint64\"}],\"internalType\":\"structDelegator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getPoSValidatorInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"internalType\":\"structPoSValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettings\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"initialWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"totalWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516164b53803806164b583398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6163688061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610276575f3560e01c806380dd672f11610156578063afb98096116100ca578063d5f20ff611610084578063d5f20ff61461066b578063df93d8de1461068b578063e4a63c4014610695578063e8682f7b146106a9578063fb8b11dd14610709578063fd7ac5e71461071c575f80fd5b8063afb98096146105f4578063b771b3bc1461061b578063ba3a4b9714610629578063bc5fbfec1461063c578063bee0a03f14610650578063c974d1b614610663575f80fd5b80639ae064471161011b5780639ae06447146104dc5780639e1bc4ef146104ef5780639e478eea14610502578063a3a65e4814610515578063a8099af214610528578063a9778a7a14610349575f80fd5b806380dd672f146104865780638280a25a1461049957806385b4bb53146104a15780638ef34c98146104b657806393e24598146104c9575f80fd5b8063467ef06f116101ed57806362065856116101b2578063620658561461040257806366435abf14610415578063732214f81461042857806376f786211461042f578063785e9e86146104425780637d8d2f7714610473575f80fd5b8063467ef06f1461038b5780634bee00401461039e5780635dd6a6cb146103bf57806360305d62146103d257806360ad7784146103ef575f80fd5b806320d91b7a1161023e57806320d91b7a146102f857806325e1c7761461030b5780632e2194d81461031e57806335455ded1461034957806337b9be8f146103655780633a1cfff614610378575f80fd5b80630118acc41461027a57806302c588c41461028f5780630322ed98146102b8578063151d30d1146102cb5780631ec44724146102e5575b5f80fd5b61028d610288366004615180565b61072f565b005b6102a261029d3660046151bb565b610740565b6040516102af91906151fa565b60405180910390f35b61028d6102c63660046151bb565b61082d565b6102d3600a81565b60405160ff90911681526020016102af565b61028d6102f3366004615180565b610abd565b61028d610306366004615269565b610ac9565b61028d6103193660046152b7565b61107f565b61033161032c3660046151bb565b6110f3565b6040516001600160401b0390911681526020016102af565b61035261271081565b60405161ffff90911681526020016102af565b61028d6103733660046152ec565b611147565b61028d610386366004615180565b61115a565b61028d61039936600461533a565b611166565b6103b16103ac366004615378565b611238565b6040519081526020016102af565b61028d6103cd3660046152ec565b61126d565b6103da601481565b60405163ffffffff90911681526020016102af565b61028d6103fd3660046152b7565b611279565b6103b16104103660046153df565b611541565b6103316104233660046151bb565b611561565b6103b15f81565b61028d61043d366004615180565b611575565b5f805160206162b3833981519152546001600160a01b03165b6040516001600160a01b0390911681526020016102af565b61028d6104813660046152ec565b611581565b61028d6104943660046152b7565b61158d565b6102d3603081565b6104a96117c7565b6040516102af91906153fa565b61028d6104c43660046154b3565b6118bc565b61028d6104d73660046151bb565b61196d565b61028d6104ea3660046152ec565b611a01565b6103b16104fd3660046154e1565b611a0d565b61028d610510366004615501565b611a39565b61028d61052336600461533a565b611b18565b60408051608080820183525f8083526020808401829052838501829052606093840191909152835180830185527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb02548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03546001600160401b03808216848601908152600160401b83048216858a01908152600160801b909304821694880194855288519384525181169483019490945251831695810195909552511691830191909152016102af565b6103b17f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b61045b6005600160991b0181565b61028d6106373660046151bb565b611d0e565b6103b15f805160206162d383398151915281565b61028d61065e3660046151bb565b611f67565b6102d3601481565b61067e6106793660046151bb565b6120a3565b6040516102af9190615591565b6103316202a30081565b6103b15f805160206162b383398151915281565b6106bc6106b73660046151bb565b6121f2565b6040805182516001600160a01b0316815260208084015161ffff1690820152828201516001600160401b0390811692820192909252606092830151909116918101919091526080016102af565b61028d6107173660046154b3565b61227e565b6103b161072a366004615611565b612315565b61073b8383835f612370565b505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261078061239c565b5f838152600791909101602052604090819020815160e081019092528054829060ff1660038111156107b4576107b46151d2565b60038111156107c5576107c56151d2565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015292915050565b5f8181525f805160206162f38339815191526020526040808220815160e0810190925280545f805160206162d383398151915293929190829060ff16600581111561087a5761087a6151d2565b600581111561088b5761088b6151d2565b815260200160018201805461089f9061567c565b80601f01602080910402602001604051908101604052809291908181526020018280546108cb9061567c565b80156109165780601f106108ed57610100808354040283529160200191610916565b820191905f5260205f20905b8154815290600101906020018083116108f957829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610981576109816151d2565b146109bd575f8381526005830160205260409081902054905163170cc93360e21b81526109b49160ff16906004016156b4565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610a34573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a5b91908101906157bd565b6040518263ffffffff1660e01b8152600401610a7791906157ee565b6020604051808303815f875af1158015610a93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab79190615800565b50505050565b610ab78383835f6123c0565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f805160206162d38339815191529060ff1615610b1b57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b829190615800565b836020013514610bab576040516372b0a7e760e11b8152602084013560048201526024016109b4565b30610bbc6060850160408601615817565b6001600160a01b031614610bff57610bda6060840160408501615817565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016109b4565b5f610c0d6060850185615832565b905090505f805b828163ffffffff161015610e75575f610c306060880188615832565b8363ffffffff16818110610c4657610c46615877565b9050602002810190610c58919061588b565b610c61906158f6565b80516040519192505f916006880191610c7991615971565b90815260200160405180910390205414610ca957805160405163a41f772f60e01b81526109b491906004016157ee565b5f6002885f013584604051602001610cd892919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610cf291615971565b602060405180830381855afa158015610d0d573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d309190615800565b90508086600601835f0151604051610d489190615971565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610d8890826159c6565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610e089085615a95565b8251604051919550610e1991615971565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610e6e90615ab5565b9050610c14565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610eb8910460ff1683615ad7565b6001600160401b03161015610eeb57604051633e1a785160e01b81526001600160401b03821660048201526024016109b4565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610f0f876126ed565b604001516040518263ffffffff1660e01b8152600401610f2f91906157ee565b602060405180830381865af4158015610f4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6e9190615800565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610fa89190615c2d565b5f60405180830381865af4158015610fc2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fe991908101906157bd565b90505f600282604051610ffc9190615971565b602060405180830381855afa158015611017573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061103a9190615800565b90508281146110665760405163baaea89d60e01b815260048101829052602481018490526044016109b4565b5050506007909201805460ff1916600117905550505050565b61108882612803565b6110a8576040516330efa98b60e01b8152600481018390526024016109b4565b5f6110b2836120a3565b51905060028160058111156110c9576110c96151d2565b146110e9578060405163170cc93360e21b81526004016109b491906156b4565b610ab7838361282c565b5f806110fd61239c565b6003015461110b9084615cc1565b905080158061112057506001600160401b0381115b156111415760405163222d164360e21b8152600481018490526024016109b4565b92915050565b611153848484846123c0565b5050505050565b610ab78383835f612acb565b61116e612d08565b5f61117761239c565b90505f8061118484612d3f565b9150915061119182612803565b61119d5750505061121f565b5f828152600684016020908152604080832054600b870190925290912080546001600160a01b031981169091556001600160a01b039182169116806111df5750805b6004835160058111156111f4576111f46151d2565b036112035761120381856130f7565b611219826112148560400151611541565b613121565b50505050505b61123560015f8051602061631383398151915255565b50565b5f611241612d08565b61124d85858585613157565b905061126560015f8051602061631383398151915255565b949350505050565b610ab7848484846132d7565b5f61128261239c565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156112bb576112bb6151d2565b60038111156112cc576112cc6151d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611342826120a3565b9050600183516003811115611359576113596151d2565b1461137a578251604051633b0d540d60e21b81526109b49190600401615ce0565b60048151600581111561138f5761138f6151d2565b036113a55761139d86613303565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f6113ca896126ed565b604001516040518263ffffffff1660e01b81526004016113ea91906157ee565b606060405180830381865af4158015611405573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114299190615cee565b509150915081841461145657846040015160405163089938b360e11b81526004016109b491815260200190565b806001600160401b031683606001516001600160401b0316108061148f5750806001600160401b03168560a001516001600160401b0316115b156114b857604051632e19bc2d60e11b81526001600160401b03821660048201526024016109b4565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61154a61239c565b60030154611141906001600160401b038416615d2e565b5f61156b826120a3565b6080015192915050565b61073b8383835f6132d7565b61115384848484612acb565b611595612d08565b5f61159e61239c565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156115d7576115d76151d2565b60038111156115e8576115e86151d2565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611661576116616151d2565b14611682578051604051633b0d540d60e21b81526109b49190600401615ce0565b600461169182604001516120a3565b5160058111156116a3576116a36151d2565b146117a2575f6116b2846126ed565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016116f191906157ee565b606060405180830381865af415801561170c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117309190615cee565b50915091508184604001511461175c5760405163089938b360e11b8152600481018390526024016109b4565b806001600160401b03168460c001516001600160401b0316111561179e57604051632e19bc2d60e11b81526001600160401b03821660048201526024016109b4565b5050505b6117ab84613303565b50506117c360015f8051602061631383398151915255565b5050565b60408051610180810182525f610120820181815261014083018290526101608301829052825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290529061182e61239c565b90506040518061012001604052806118446134d8565b8152825460208201526001830154604082015260028301546001600160401b0381166060830152600160401b810461ffff166080830152600160501b900460ff1660a0820152600383015460c082015260048301546001600160a01b031660e082015260059092015461010090920191909152919050565b5f6118c561239c565b90506001600160a01b0382166118f95760405163caa903f960e01b81526001600160a01b03831660048201526024016109b4565b5f8381526006820160205260409020546001600160a01b0316331461193f57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016109b4565b5f928352600b01602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b5f61197661239c565b90505f611982836120a3565b5190506004816005811115611999576119996151d2565b146119b9578060405163170cc93360e21b81526004016109b491906156b4565b5f8381526006830160205260409020546001600160a01b031633146119de573361191a565b5f83815260068301602052604090205461073b906001600160a01b0316846130f7565b610ab784848484612370565b5f611a16612d08565b611a21833384613539565b905061114160015f8051602061631383398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611a82575080546001600160401b03808416911610155b15611aa05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611acb8484613777565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f805160206162d38339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611b4b866126ed565b604001516040518263ffffffff1660e01b8152600401611b6b91906157ee565b6040805180830381865af4158015611b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba99190615d45565b9150915080611bcf57604051632d07135360e01b815281151560048201526024016109b4565b5f82815260048401602052604090208054611be99061567c565b90505f03611c0d5760405163089938b360e11b8152600481018390526024016109b4565b60015f838152600580860160205260409091205460ff1690811115611c3457611c346151d2565b14611c67575f8281526005840160205260409081902054905163170cc93360e21b81526109b49160ff16906004016156b4565b5f8281526004840160205260408120611c7f916150cf565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f611d1761239c565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611d5057611d506151d2565b6003811115611d6157611d616151d2565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611dda57611dda6151d2565b14158015611dfb5750600381516003811115611df857611df86151d2565b14155b15611e1c578051604051633b0d540d60e21b81526109b49190600401615ce0565b5f611e2a82604001516120a3565b905080606001516001600160401b03165f03611e5c576040516339b894f960e21b8152600481018590526024016109b4565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611eca93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ee4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f0b91908101906157bd565b6040518263ffffffff1660e01b8152600401611f2791906157ee565b6020604051808303815f875af1158015611f43573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111539190615800565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f805160206162d38339815191529190611fae9061567c565b90505f03611fd25760405163089938b360e11b8152600481018390526024016109b4565b60015f838152600580840160205260409091205460ff1690811115611ff957611ff96151d2565b1461202c575f8281526005820160205260409081902054905163170cc93360e21b81526109b49160ff16906004016156b4565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb926120639201615d68565b6020604051808303815f875af115801561207f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073b9190615800565b6120ab615106565b5f8281525f805160206162f3833981519152602052604090819020815160e0810190925280545f805160206162d3833981519152929190829060ff1660058111156120f8576120f86151d2565b6005811115612109576121096151d2565b815260200160018201805461211d9061567c565b80601f01602080910402602001604051908101604052809291908181526020018280546121499061567c565b80156121945780601f1061216b57610100808354040283529160200191612194565b820191905f5260205f20905b81548152906001019060200180831161217757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b604080516080810182525f80825260208201819052918101829052606081019190915261221d61239c565b5f9283526006016020908152604092839020835160808101855281546001600160a01b038116825261ffff600160a01b820416938201939093526001600160401b03600160b01b909304831694810194909452600101541660608301525090565b6001600160a01b0381166122b05760405163caa903f960e01b81526001600160a01b03821660048201526024016109b4565b5f6122b961239c565b5f8481526007820160205260409020549091506001600160a01b036101009091041633146122e7573361191a565b5f928352600901602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6040515f905f805160206162d3833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906123589086908690615df2565b90815260200160405180910390205491505092915050565b61237c848484846123c0565b610ab757604051631036cf9160e11b8152600481018590526024016109b4565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806123ca61239c565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612403576124036151d2565b6003811115612414576124146151d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61248a826120a3565b90506002835160038111156124a1576124a16151d2565b146124c2578251604051633b0d540d60e21b81526109b49190600401615ce0565b60208301516001600160a01b0316331461255e575f8281526006850160205260409020546001600160a01b031633146124fb573361191a565b5f82815260068501602052604090205460a082015161252a91600160b01b90046001600160401b031690615a95565b6001600160401b031642101561255e5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016109b4565b600281516005811115612573576125736151d2565b036126955760028401546080840151612595916001600160401b031690615a95565b6001600160401b03164210156125c95760405163fb6ce63f60e01b81526001600160401b03421660048201526024016109b4565b87156125db576125d9828861282c565b505b5f8981526007850160205260409020805460ff191660031790556060830151608082015161261491849161260f9190615e01565b613791565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561265784888c613968565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506112659350505050565b6004815160058111156126aa576126aa6151d2565b036126d1576126ba83878b613968565b506126c489613303565b6001945050505050611265565b805160405163170cc93360e21b81526109b491906004016156b4565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612751573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127789190810190615e21565b915091508061279a57604051636b2f19e960e01b815260040160405180910390fd5b8151156127c0578151604051636ba589a560e01b815260048101919091526024016109b4565b60208201516001600160a01b0316156127fc576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016109b4565b5092915050565b5f8061280d61239c565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612877573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261289e9190810190615e21565b91509150806128c057604051636b2f19e960e01b815260040160405180910390fd5b5f6128c961239c565b60058101548451919250146128f7578251604051636ba589a560e01b815260048101919091526024016109b4565b60208301516001600160a01b031615612933576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016109b4565b60208301516001600160a01b03161561296f576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016109b4565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016129ac91906157ee565b6040805180830381865af41580156129c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ea9190615eb1565b91509150818814612a115760405163089938b360e11b8152600481018990526024016109b4565b5f8881526006840160205260409020600101546001600160401b039081169082161115612aa2575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612ac0565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b5f80612ad561239c565b90505f612ae187613b56565b9050612aec87612803565b612afb57600192505050611265565b5f8781526006830160205260409020546001600160a01b03163314612b20573361191a565b5f87815260068301602052604090205460a0820151612b4f91600160b01b90046001600160401b031690615a95565b6001600160401b03168160c001516001600160401b03161015612b965760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016109b4565b5f8615612bae57612ba7888761282c565b9050612bcc565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612bf190611541565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612c5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7e9190615800565b90506001600160a01b038616612caa575f8981526006850160205260409020546001600160a01b031695505b5f898152600a8501602052604081208054839290612cc9908490615ed4565b90915550505f898152600b909401602052604090932080546001600160a01b0387166001600160a01b0319909116179055505015159050949350505050565b5f80516020616313833981519152805460011901612d3957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612d48615106565b5f805160206162d38339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612d7b886126ed565b604001516040518263ffffffff1660e01b8152600401612d9b91906157ee565b6040805180830381865af4158015612db5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dd99190615d45565b915091508015612e0057604051632d07135360e01b815281151560048201526024016109b4565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612e3757612e376151d2565b6005811115612e4857612e486151d2565b8152602001600182018054612e5c9061567c565b80601f0160208091040260200160405190810160405280929190818152602001828054612e889061567c565b8015612ed35780601f10612eaa57610100808354040283529160200191612ed3565b820191905f5260205f20905b815481529060010190602001808311612eb657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612f3e57612f3e6151d2565b14158015612f5f5750600181516005811115612f5c57612f5c6151d2565b14155b15612f8057805160405163170cc93360e21b81526109b491906004016156b4565b600381516005811115612f9557612f956151d2565b03612fa35760048152612fa8565b600581525b836006018160200151604051612fbe9190615971565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115613001576130016151d2565b02179055506020820151600182019061301a90826159c6565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156130c0576130c06151d2565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f61310061239c565b5f838152600a8201602052604081208054919055909150610ab78482613e3b565b5f805160206162b3833981519152546117c3906001600160a01b03168383613eb1565b60015f8051602061631383398151915255565b5f8061316161239c565b600281015490915061ffff600160401b9091048116908616108061318a575061271061ffff8616115b156131ae57604051635f12e6c360e11b815261ffff861660048201526024016109b4565b60028101546001600160401b0390811690851610156131ea576040516202a06d60e11b81526001600160401b03851660048201526024016109b4565b80548310806131fc5750806001015483115b1561321d5760405163222d164360e21b8152600481018490526024016109b4565b5f61322784613f10565b90505f613233826110f3565b90505f6132408983613f33565b5f818152600686016020908152604080832080546001600160401b039c909c16600160b01b0267ffffffffffffffff60b01b1961ffff9e909e16600160a01b02336001600160b01b0319909e168e17179d909d169c909c178c556001909b01805467ffffffffffffffff19169055600b9096019095529790932080546001600160a01b031916909617909555509395945050505050565b6132e384848484612acb565b610ab757604051635bff683f60e11b8152600481018590526024016109b4565b5f61330c61239c565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115613345576133456151d2565b6003811115613356576133566151d2565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506133ca6134d8565b6020015182608001516133dd9190615a95565b6001600160401b03164210156134115760405163fb6ce63f60e01b81526001600160401b03421660048201526024016109b4565b5f848152600784016020908152604080832080546001600160a81b03191681556001810184905560020183905560098601909152902080546001600160a01b031981169091556001600160a01b03168061346c575060208201515b5f806134798388866144a5565b9150915061349285602001516112148760600151611541565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b604080516060810182525f80825260208201819052918101829052905f805160206162d383398151915260408051606081018252825481526001909201546001600160401b0381166020840152600160401b900460ff169082015292915050565b5f8061354361239c565b90505f61355261032c85613f10565b90505f61355e876120a3565b905061356987612803565b613589576040516330efa98b60e01b8152600481018890526024016109b4565b60028151600581111561359e5761359e6151d2565b146135bf57805160405163170cc93360e21b81526109b491906004016156b4565b5f8282608001516135d09190615a95565b600285015460408401519192506135f291600160501b90910460ff1690615ad7565b6001600160401b0316816001600160401b0316111561362f57604051636d51fe0560e11b81526001600160401b03821660048201526024016109b4565b5f8061363b8a84613791565b915091505f8a8360405160200161366992919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b61377f614552565b6137888261459d565b6117c381614617565b5f8281525f805160206162f3833981519152602052604081206002015481905f805160206162d383398151915290600160801b90046001600160401b03166137d9858261467f565b5f6137e3876148e9565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561388c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138b391908101906157bd565b6040518263ffffffff1660e01b81526004016138cf91906157ee565b6020604051808303815f875af11580156138eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061390f9190615800565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061397261239c565b90505f61398286604001516120a3565b90505f60038251600581111561399a5761399a6151d2565b14806139b857506004825160058111156139b6576139b66151d2565b145b156139c8575060c0810151613a05565b6002825160058111156139dd576139dd6151d2565b036139e9575042613a05565b815160405163170cc93360e21b81526109b491906004016156b4565b86608001516001600160401b0316816001600160401b031611613a2d575f9350505050613770565b600483015460608801515f916001600160a01b031690634f22429f90613a5290611541565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015613ad3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613af79190615800565b90506001600160a01b038716613b0f57876020015196505b5f8681526008850160209081526040808320849055600990960190529390932080546001600160a01b0388166001600160a01b031990911617905550909150509392505050565b613b5e615106565b5f8281525f805160206162f38339815191526020526040808220815160e0810190925280545f805160206162d383398151915293929190829060ff166005811115613bab57613bab6151d2565b6005811115613bbc57613bbc6151d2565b8152602001600182018054613bd09061567c565b80601f0160208091040260200160405190810160405280929190818152602001828054613bfc9061567c565b8015613c475780601f10613c1e57610100808354040283529160200191613c47565b820191905f5260205f20905b815481529060010190602001808311613c2a57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613cb557613cb56151d2565b14613ce8575f8481526005830160205260409081902054905163170cc93360e21b81526109b49160ff16906004016156b4565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff1916906001908490811115613d2d57613d2d6151d2565b021790555060208201516001820190613d4690826159c6565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613de48582613791565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b5f5f805160206162b383398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613e96575f80fd5b505af1158015613ea8573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b0383811660248301526044820183905261073b91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061495e565b5f611141825f805160206162b3833981519152546001600160a01b0316906149bf565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16613f7757604051637fab81e560e01b815260040160405180910390fd5b5f805160206162d383398151915242613f9660608601604087016153df565b6001600160401b0316111580613fd05750613fb46202a30042615ed4565b613fc460608601604087016153df565b6001600160401b031610155b1561400a57613fe560608501604086016153df565b604051635879da1360e11b81526001600160401b0390911660048201526024016109b4565b60038101546001600160401b039061402d90600160401b90048216858316615ed4565b111561405757604051633e1a785160e01b81526001600160401b03841660048201526024016109b4565b61406c6140676060860186615ee7565b6149cb565b61407c6140676080860186615ee7565b603061408b6020860186615efb565b9050146140bd5761409f6020850185615efb565b6040516326475b2f60e11b81526109b4925060040190815260200190565b6140c78480615efb565b90505f036140f4576140d98480615efb565b604051633e08a12560e11b81526004016109b4929190615f3d565b5f600682016141038680615efb565b604051614111929190615df2565b9081526020016040518091039020541461414a5761412f8480615efb565b60405163a41f772f60e01b81526004016109b4929190615f3d565b614154835f61467f565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016141918a80615efb565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906141d9908b018b615efb565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161422260608b0160408c016153df565b6001600160401b0316815260200161423d60608b018b615ee7565b61424690615f50565b815260200161425860808b018b615ee7565b61426190615f50565b8152602001886001600160401b03168152506040518263ffffffff1660e01b815260040161428f919061607d565b5f60405180830381865af41580156142a9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526142d09190810190616134565b5f828152600486016020526040902091935091506142ee82826159c6565b5081600684016142fe8880615efb565b60405161430c929190615df2565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906143489085906004016157ee565b6020604051808303815f875af1158015614364573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143889190615800565b5f8481526005860160205260409020805460ff1916600117905590506143ae8780615efb565b5f8581526005870160205260409020600101916143cc919083616177565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061442b8880615efb565b604051614439929190615df2565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061447791906153df565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6144b061239c565b5f86815260088201602052604081208054908290559192509081908015614544575f878152600685016020526040902054612710906144fa90600160a01b900461ffff1683615d2e565b6145049190615cc1565b91508184600a015f8981526020019081526020015f205f8282546145289190615ed4565b9091555061453890508282616230565b92506145448984613e3b565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661459b57604051631afcd79f60e31b815260040160405180910390fd5b565b6145a5614552565b6145ae81614b34565b6145b6614b4d565b611235606082013560808301356145d360c0850160a086016153df565b6145e360e0860160c08701616243565b6145f4610100870160e0880161625c565b61010087013561460c61014089016101208a01615817565b886101400135614b5d565b61461f614552565b5f805160206162b38339815191526001600160a01b03821661465f57604051637330680360e01b81526001600160a01b03831660048201526024016109b4565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f805160206162d38339815191525f6001600160401b0380841690851611156146b3576146ac8385615e01565b90506146c0565b6146bd8484615e01565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b900490921660608201524291158061472d575060018401548151614729916001600160401b031690615ed4565b8210155b15614755576001600160401b0380841660608301528282526040820151166020820152614774565b82816060018181516147679190615a95565b6001600160401b03169052505b6060810151614784906064615ad7565b602082015160018601546001600160401b0392909216916147af9190600160401b900460ff16615ad7565b6001600160401b031610156147e857606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016109b4565b85816040018181516147fa9190615a95565b6001600160401b031690525060408101805186919061481a908390615e01565b6001600160401b03169052506001840154604082015160649161484891600160401b90910460ff1690615ad7565b6001600160401b03161015614881576040808201519051633e1a785160e01b81526001600160401b0390911660048201526024016109b4565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f805160206162f38339815191526020526040812060020180545f805160206162d3833981519152919060089061493390600160401b90046001600160401b031661627c565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6149726001600160a01b03841683614d1a565b905080515f141580156149965750808060200190518101906149949190616297565b155b1561073b57604051635274afe760e01b81526001600160a01b03841660048201526024016109b4565b5f613770833384614d27565b6149d8602082018261533a565b63ffffffff161580156149f857506149f36020820182615832565b151590505b15614a3f57614a0a602082018261533a565b614a176020830183615832565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016109b4565b614a4c6020820182615832565b9050614a5b602083018361533a565b63ffffffff161115614a7457614a0a602082018261533a565b60015b614a846020830183615832565b90508110156117c357614a9a6020830183615832565b614aa5600184616230565b818110614ab457614ab4615877565b9050602002016020810190614ac99190615817565b6001600160a01b0316614adf6020840184615832565b83818110614aef57614aef615877565b9050602002016020810190614b049190615817565b6001600160a01b03161015614b2c57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614a77565b614b3c614552565b614b44614e8a565b61123581614e92565b614b55614552565b61459b614f7a565b614b65614552565b5f614b6e61239c565b905061ffff86161580614b86575061271061ffff8716115b15614baa57604051635f12e6c360e11b815261ffff871660048201526024016109b4565b87891115614bce5760405163222d164360e21b8152600481018a90526024016109b4565b60ff85161580614be15750600a60ff8616115b15614c045760405163170db35960e31b815260ff861660048201526024016109b4565b614c0c6134d8565b602001516001600160401b0316876001600160401b03161015614c4c576040516202a06d60e11b81526001600160401b03881660048201526024016109b4565b835f03614c6c5760405163a733007160e01b815260040160405180910390fd5b81614c8d57604051632f6bd1db60e01b8152600481018390526024016109b4565b978855600188019690965560028701805460ff909416600160501b0260ff60501b1961ffff909616600160401b0269ffffffffffffffffffff199095166001600160401b0390971696909617939093179390931693909317905560038401919091556004830180546001600160a01b039092166001600160a01b0319909216919091179055600590910155565b606061377083835f614f82565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015614d6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d919190615800565b9050614da86001600160a01b038616853086615011565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614dec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614e109190615800565b9050818111614e765760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b60648201526084016109b4565b614e808282616230565b9695505050505050565b61459b614552565b614e9a614552565b80355f805160206162d38339815191529081556014614ebf606084016040850161625c565b60ff161180614ede5750614ed9606083016040840161625c565b60ff16155b15614f1257614ef3606083016040840161625c565b604051634a59bbff60e11b815260ff90911660048201526024016109b4565b614f22606083016040840161625c565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614f5360408301602084016153df565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b613144614552565b606081471015614fa75760405163cd78605960e01b81523060048201526024016109b4565b5f80856001600160a01b03168486604051614fc29190615971565b5f6040518083038185875af1925050503d805f8114614ffc576040519150601f19603f3d011682016040523d82523d5f602084013e615001565b606091505b5091509150614e8086838361504a565b6040516001600160a01b038481166024830152838116604483015260648201839052610ab79186918216906323b872dd90608401613ede565b60608261505f5761505a826150a6565b613770565b815115801561507657506001600160a01b0384163b155b1561509f57604051639996b31560e01b81526001600160a01b03851660048201526024016109b4565b5080613770565b8051156150b65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546150db9061567c565b5f825580601f106150ea575050565b601f0160209004905f5260205f20908101906112359190615143565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115615157575f8155600101615144565b5090565b8015158114611235575f80fd5b803563ffffffff8116811461517b575f80fd5b919050565b5f805f60608486031215615192575f80fd5b8335925060208401356151a48161515b565b91506151b260408501615168565b90509250925092565b5f602082840312156151cb575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b600481106151f6576151f66151d2565b9052565b5f60e08201905061520c8284516151e6565b60018060a01b0360208401511660208301526040830151604083015260608301516001600160401b0380821660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b5f806040838503121561527a575f80fd5b82356001600160401b0381111561528f575f80fd5b8301608081860312156152a0575f80fd5b91506152ae60208401615168565b90509250929050565b5f80604083850312156152c8575f80fd5b823591506152ae60208401615168565b6001600160a01b0381168114611235575f80fd5b5f805f80608085870312156152ff575f80fd5b8435935060208501356153118161515b565b925061531f60408601615168565b9150606085013561532f816152d8565b939692955090935050565b5f6020828403121561534a575f80fd5b61377082615168565b803561ffff8116811461517b575f80fd5b6001600160401b0381168114611235575f80fd5b5f805f806080858703121561538b575f80fd5b84356001600160401b038111156153a0575f80fd5b850160a081880312156153b1575f80fd5b93506153bf60208601615353565b925060408501356153cf81615364565b9396929550929360600135925050565b5f602082840312156153ef575f80fd5b813561377081615364565b5f610160820190508251805183526001600160401b03602082015116602084015260ff6040820151166040840152506020830151606083015260408301516080830152606083015161545760a08401826001600160401b03169052565b50608083015161ffff811660c08401525060a083015160ff811660e08401525060c0830151610100818185015260e085015191506154a16101208501836001600160a01b03169052565b80850151610140850152505092915050565b5f80604083850312156154c4575f80fd5b8235915060208301356154d6816152d8565b809150509250929050565b5f80604083850312156154f2575f80fd5b50508035926020909101359150565b5f80828403610180811215615514575f80fd5b61016080821215615523575f80fd5b84935083013590506154d6816152d8565b600681106151f6576151f66151d2565b5f5b8381101561555e578181015183820152602001615546565b50505f910152565b5f815180845261557d816020860160208601615544565b601f01601f19169290920160200192915050565b602081526155a3602082018351615534565b5f602083015160e060408401526155be610100840182615566565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215615622575f80fd5b82356001600160401b0380821115615638575f80fd5b818501915085601f83011261564b575f80fd5b813581811115615659575f80fd5b86602082850101111561566a575f80fd5b60209290920196919550909350505050565b600181811c9082168061569057607f821691505b6020821081036156ae57634e487b7160e01b5f52602260045260245ffd5b50919050565b602081016111418284615534565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156156f8576156f86156c2565b60405290565b604080519081016001600160401b03811182821017156156f8576156f86156c2565b604051601f8201601f191681016001600160401b0381118282101715615748576157486156c2565b604052919050565b5f6001600160401b03821115615768576157686156c2565b50601f01601f191660200190565b5f82601f830112615785575f80fd5b815161579861579382615750565b615720565b8181528460208386010111156157ac575f80fd5b611265826020830160208701615544565b5f602082840312156157cd575f80fd5b81516001600160401b038111156157e2575f80fd5b61126584828501615776565b602081525f6137706020830184615566565b5f60208284031215615810575f80fd5b5051919050565b5f60208284031215615827575f80fd5b8135613770816152d8565b5f808335601e19843603018112615847575f80fd5b8301803591506001600160401b03821115615860575f80fd5b6020019150600581901b3603821315613961575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261589f575f80fd5b9190910192915050565b5f82601f8301126158b8575f80fd5b81356158c661579382615750565b8181528460208386010111156158da575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615906575f80fd5b61590e6156d6565b82356001600160401b0380821115615924575f80fd5b615930368387016158a9565b83526020850135915080821115615945575f80fd5b50615952368286016158a9565b602083015250604083013561596681615364565b604082015292915050565b5f825161589f818460208701615544565b601f82111561073b57805f5260205f20601f840160051c810160208510156159a75750805b601f840160051c820191505b81811015611153575f81556001016159b3565b81516001600160401b038111156159df576159df6156c2565b6159f3816159ed845461567c565b84615982565b602080601f831160018114615a26575f8415615a0f5750858301515b5f19600386901b1c1916600185901b17855561139d565b5f85815260208120601f198616915b82811015615a5457888601518255948401946001909101908401615a35565b5085821015615a7157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156127fc576127fc615a81565b5f63ffffffff808316818103615acd57615acd615a81565b6001019392505050565b6001600160401b03818116838216028082169190828114615afa57615afa615a81565b505092915050565b5f808335601e19843603018112615b17575f80fd5b83016020810192503590506001600160401b03811115615b35575f80fd5b803603821315613961575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015615c2057848303601f19018952813536889003605e19018112615ba7575f80fd5b87016060615bb58280615b02565b828752615bc58388018284615b43565b92505050615bd586830183615b02565b86830388880152615be7838284615b43565b925050506040808301359250615bfc83615364565b6001600160401b039290921694909101939093529783019790830190600101615b82565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135615c51816152d8565b6001600160a01b031660608381019190915283013536849003601e19018112615c78575f80fd5b83016020810190356001600160401b03811115615c93575f80fd5b8060051b3603821315615ca4575f80fd5b608080850152615cb860a085018284615b6b565b95945050505050565b5f82615cdb57634e487b7160e01b5f52601260045260245ffd5b500490565b6020810161114182846151e6565b5f805f60608486031215615d00575f80fd5b835192506020840151615d1281615364565b6040850151909250615d2381615364565b809150509250925092565b808202811582820484141761114157611141615a81565b5f8060408385031215615d56575f80fd5b8251915060208301516154d68161515b565b5f60208083525f8454615d7a8161567c565b806020870152604060018084165f8114615d9b5760018114615db757615de4565b60ff19851660408a0152604084151560051b8a01019550615de4565b895f5260205f205f5b85811015615ddb5781548b8201860152908301908801615dc0565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038281168282160390808211156127fc576127fc615a81565b5f8060408385031215615e32575f80fd5b82516001600160401b0380821115615e48575f80fd5b9084019060608287031215615e5b575f80fd5b615e636156d6565b825181526020830151615e75816152d8565b6020820152604083015182811115615e8b575f80fd5b615e9788828601615776565b60408301525080945050505060208301516154d68161515b565b5f8060408385031215615ec2575f80fd5b8251915060208301516154d681615364565b8082018082111561114157611141615a81565b5f8235603e1983360301811261589f575f80fd5b5f808335601e19843603018112615f10575f80fd5b8301803591506001600160401b03821115615f29575f80fd5b602001915036819003821315613961575f80fd5b602081525f611265602083018486615b43565b5f60408236031215615f60575f80fd5b615f686156fe565b615f7183615168565b81526020808401356001600160401b0380821115615f8d575f80fd5b9085019036601f830112615f9f575f80fd5b813581811115615fb157615fb16156c2565b8060051b9150615fc2848301615720565b8181529183018401918481019036841115615fdb575f80fd5b938501935b838510156160055784359250615ff5836152d8565b8282529385019390850190615fe0565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156160725784516001600160a01b03168252938301936001929092019190830190616049565b509695505050505050565b60208152815160208201525f602083015160e060408401526160a3610100840182615566565b90506040840151601f19808584030160608601526160c18383615566565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526160f18383616017565b925060a08601519150808584030160c08601525061610f8282616017565b91505060c084015161612c60e08501826001600160401b03169052565b509392505050565b5f8060408385031215616145575f80fd5b8251915060208301516001600160401b03811115616161575f80fd5b61616d85828601615776565b9150509250929050565b6001600160401b0383111561618e5761618e6156c2565b6161a28361619c835461567c565b83615982565b5f601f8411600181146161d3575f85156161bc5750838201355b5f19600387901b1c1916600186901b178355611153565b5f83815260208120601f198716915b8281101561620257868501358255602094850194600190920191016161e2565b508682101561621e575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8181038181111561114157611141615a81565b5f60208284031215616253575f80fd5b61377082615353565b5f6020828403121561626c575f80fd5b813560ff81168114613770575f80fd5b5f6001600160401b03808316818103615acd57615acd615a81565b5f602082840312156162a7575f80fd5b81516137708161515b56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220157ff2cc8656f194a52c6e1471731d2baee1a15c9a66d66945ded440654a0d1b64736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -688,6 +707,68 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) Erc20() return _ERC20TokenStakingManager.Contract.Erc20(&_ERC20TokenStakingManager.CallOpts) } +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetDelegator(opts *bind.CallOpts, delegationID [32]byte) (Delegator, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getDelegator", delegationID) + + if err != nil { + return *new(Delegator), err + } + + out0 := *abi.ConvertType(out[0], new(Delegator)).(*Delegator) + + return out0, err + +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _ERC20TokenStakingManager.Contract.GetDelegator(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _ERC20TokenStakingManager.Contract.GetDelegator(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetPoSValidatorInfo(opts *bind.CallOpts, validationID [32]byte) (PoSValidatorInfo, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getPoSValidatorInfo", validationID) + + if err != nil { + return *new(PoSValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(PoSValidatorInfo)).(*PoSValidatorInfo) + + return out0, err + +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _ERC20TokenStakingManager.Contract.GetPoSValidatorInfo(&_ERC20TokenStakingManager.CallOpts, validationID) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _ERC20TokenStakingManager.Contract.GetPoSValidatorInfo(&_ERC20TokenStakingManager.CallOpts, validationID) +} + // GetSettings is a free data retrieval call binding the contract method 0x85b4bb53. // // Solidity: function getSettings() view returns(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32)) diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 96b00e742..66ed85e07 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -37,6 +37,17 @@ type ConversionData struct { InitialValidators []InitialValidator } +// Delegator is an auto generated low-level Go binding around an user-defined struct. +type Delegator struct { + Status uint8 + Owner common.Address + ValidationID [32]byte + Weight uint64 + StartedAt uint64 + StartingNonce uint64 + EndingNonce uint64 +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -50,6 +61,14 @@ type PChainOwner struct { Addresses []common.Address } +// PoSValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type PoSValidatorInfo struct { + Owner common.Address + DelegationFeeBips uint16 + MinStakeDuration uint64 + UptimeSeconds uint64 +} + // PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type PoSValidatorManagerSettings struct { BaseSettings ValidatorManagerSettings @@ -111,8 +130,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettings\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"initialWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"totalWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615f82380380615f8283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615e358061014d5f395ff3fe608060405260043610610249575f3560e01c806380dd672f11610134578063afb98096116100b3578063c599e24f11610078578063c599e24f1461078c578063c974d1b61461079f578063d5f20ff6146107b3578063df93d8de146107df578063fb8b11dd146107f5578063fd7ac5e714610814575f80fd5b8063afb98096146106e1578063b771b3bc14610714578063ba3a4b971461072e578063bc5fbfec1461074d578063bee0a03f1461076d575f80fd5b80639ae06447116100f95780639ae06447146105b8578063a3a65e48146105d7578063a8099af2146105f6578063a9778a7a1461039d578063af2f5feb146106ce575f80fd5b806380dd672f146105265780638280a25a1461054557806385b4bb53146105595780638ef34c981461057a57806393e2459814610599575f80fd5b806337b9be8f116101cb57806360ad77841161019057806360ad77841461046a578063620658561461048957806366435abf146104b6578063732214f8146104d557806376f78621146104e85780637d8d2f7714610507575f80fd5b806337b9be8f146103c55780633a1cfff6146103e4578063467ef06f146104035780635dd6a6cb1461042257806360305d6214610441575f80fd5b806320d91b7a1161021157806320d91b7a146102f657806325e1c776146103155780632e2194d814610334578063329c3e121461036b57806335455ded1461039d575f80fd5b80630118acc41461024d5780630322ed981461026e5780630ba512d11461028d578063151d30d1146102ac5780631ec44724146102d7575b5f80fd5b348015610258575f80fd5b5061026c610267366004614d4e565b610833565b005b348015610279575f80fd5b5061026c610288366004614d89565b610844565b348015610298575f80fd5b5061026c6102a7366004614da0565b610ad4565b3480156102b7575f80fd5b506102c0600a81565b60405160ff90911681526020015b60405180910390f35b3480156102e2575f80fd5b5061026c6102f1366004614d4e565b610bb1565b348015610301575f80fd5b5061026c610310366004614db7565b610bbd565b348015610320575f80fd5b5061026c61032f366004614e05565b611173565b34801561033f575f80fd5b5061035361034e366004614d89565b6111e7565b6040516001600160401b0390911681526020016102ce565b348015610376575f80fd5b506103856001600160991b0181565b6040516001600160a01b0390911681526020016102ce565b3480156103a8575f80fd5b506103b261271081565b60405161ffff90911681526020016102ce565b3480156103d0575f80fd5b5061026c6103df366004614e3a565b61123b565b3480156103ef575f80fd5b5061026c6103fe366004614d4e565b61124e565b34801561040e575f80fd5b5061026c61041d366004614e88565b61125a565b34801561042d575f80fd5b5061026c61043c366004614e3a565b61132c565b34801561044c575f80fd5b50610455601481565b60405163ffffffff90911681526020016102ce565b348015610475575f80fd5b5061026c610484366004614e05565b611338565b348015610494575f80fd5b506104a86104a3366004614eb5565b611600565b6040519081526020016102ce565b3480156104c1575f80fd5b506103536104d0366004614d89565b611620565b3480156104e0575f80fd5b506104a85f81565b3480156104f3575f80fd5b5061026c610502366004614d4e565b611634565b348015610512575f80fd5b5061026c610521366004614e3a565b611640565b348015610531575f80fd5b5061026c610540366004614e05565b61164c565b348015610550575f80fd5b506102c0603081565b348015610564575f80fd5b5061056d611886565b6040516102ce9190614ed0565b348015610585575f80fd5b5061026c610594366004614f89565b61197b565b3480156105a4575f80fd5b5061026c6105b3366004614d89565b611a2c565b3480156105c3575f80fd5b5061026c6105d2366004614e3a565b611ac0565b3480156105e2575f80fd5b5061026c6105f1366004614e88565b611acc565b348015610601575f80fd5b5060408051608080820183525f8083526020808401829052838501829052606093840191909152835180830185527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb02548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03546001600160401b03808216848601908152600160401b83048216858a01908152600160801b909304821694880194855288519384525181169483019490945251831695810195909552511691830191909152016102ce565b6104a86106dc366004614fc8565b611cc2565b3480156106ec575f80fd5b506104a87f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b34801561071f575f80fd5b506103856005600160991b0181565b348015610739575f80fd5b5061026c610748366004614d89565b611cf6565b348015610758575f80fd5b506104a85f80516020615da083398151915281565b348015610778575f80fd5b5061026c610787366004614d89565b611f4f565b6104a861079a366004614d89565b61208b565b3480156107aa575f80fd5b506102c0601481565b3480156107be575f80fd5b506107d26107cd366004614d89565b6120bc565b6040516102ce919061509e565b3480156107ea575f80fd5b506103536202a30081565b348015610800575f80fd5b5061026c61080f366004614f89565b61220b565b34801561081f575f80fd5b506104a861082e36600461511e565b6122a2565b61083f8383835f6122fd565b505050565b5f8181525f80516020615dc08339815191526020526040808220815160e0810190925280545f80516020615da083398151915293929190829060ff16600581111561089157610891615029565b60058111156108a2576108a2615029565b81526020016001820180546108b690615189565b80601f01602080910402602001604051908101604052809291908181526020018280546108e290615189565b801561092d5780601f106109045761010080835404028352916020019161092d565b820191905f5260205f20905b81548152906001019060200180831161091057829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561099857610998615029565b146109d4575f8381526005830160205260409081902054905163170cc93360e21b81526109cb9160ff16906004016151bb565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610a4b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a7291908101906152c4565b6040518263ffffffff1660e01b8152600401610a8e91906152f5565b6020604051808303815f875af1158015610aaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ace9190615307565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610b1d575080546001600160401b03808416911610155b15610b3b5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610b6583612329565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610ace8383835f61233a565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020615da08339815191529060ff1615610c0f57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c769190615307565b836020013514610c9f576040516372b0a7e760e11b8152602084013560048201526024016109cb565b30610cb0606085016040860161531e565b6001600160a01b031614610cf357610cce606084016040850161531e565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016109cb565b5f610d016060850185615339565b905090505f805b828163ffffffff161015610f69575f610d246060880188615339565b8363ffffffff16818110610d3a57610d3a61537e565b9050602002810190610d4c9190615392565b610d55906153fd565b80516040519192505f916006880191610d6d91615478565b90815260200160405180910390205414610d9d57805160405163a41f772f60e01b81526109cb91906004016152f5565b5f6002885f013584604051602001610dcc92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610de691615478565b602060405180830381855afa158015610e01573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e249190615307565b90508086600601835f0151604051610e3c9190615478565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610e7c90826154cd565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610efc908561559c565b8251604051919550610f0d91615478565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610f62906155bc565b9050610d08565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610fac910460ff16836155de565b6001600160401b03161015610fdf57604051633e1a785160e01b81526001600160401b03821660048201526024016109cb565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846110038761266f565b604001516040518263ffffffff1660e01b815260040161102391906152f5565b602060405180830381865af415801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190615307565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b815260040161109c9190615734565b5f60405180830381865af41580156110b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110dd91908101906152c4565b90505f6002826040516110f09190615478565b602060405180830381855afa15801561110b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061112e9190615307565b905082811461115a5760405163baaea89d60e01b815260048101829052602481018490526044016109cb565b5050506007909201805460ff1916600117905550505050565b61117c82612785565b61119c576040516330efa98b60e01b8152600481018390526024016109cb565b5f6111a6836120bc565b51905060028160058111156111bd576111bd615029565b146111dd578060405163170cc93360e21b81526004016109cb91906151bb565b610ace83836127ae565b5f806111f1612a4d565b600301546111ff90846157c8565b905080158061121457506001600160401b0381115b156112355760405163222d164360e21b8152600481018490526024016109cb565b92915050565b6112478484848461233a565b5050505050565b610ace8383835f612a71565b611262612cae565b5f61126b612a4d565b90505f8061127884612ce5565b9150915061128582612785565b61129157505050611313565b5f828152600684016020908152604080832054600b870190925290912080546001600160a01b031981169091556001600160a01b039182169116806112d35750805b6004835160058111156112e8576112e8615029565b036112f7576112f7818561309d565b61130d826113088560400151611600565b6130c7565b50505050505b61132960015f80516020615de083398151915255565b50565b610ace848484846130ed565b5f611341612a4d565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561137a5761137a615029565b600381111561138b5761138b615029565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f611401826120bc565b905060018351600381111561141857611418615029565b14611439578251604051633b0d540d60e21b81526109cb91906004016157e7565b60048151600581111561144e5761144e615029565b036114645761145c86613119565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f6114898961266f565b604001516040518263ffffffff1660e01b81526004016114a991906152f5565b606060405180830381865af41580156114c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190615801565b509150915081841461151557846040015160405163089938b360e11b81526004016109cb91815260200190565b806001600160401b031683606001516001600160401b0316108061154e5750806001600160401b03168560a001516001600160401b0316115b1561157757604051632e19bc2d60e11b81526001600160401b03821660048201526024016109cb565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f611609612a4d565b60030154611235906001600160401b038416615836565b5f61162a826120bc565b6080015192915050565b61083f8383835f6130ed565b61124784848484612a71565b611654612cae565b5f61165d612a4d565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561169657611696615029565b60038111156116a7576116a7615029565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561172057611720615029565b14611741578051604051633b0d540d60e21b81526109cb91906004016157e7565b600461175082604001516120bc565b51600581111561176257611762615029565b14611861575f6117718461266f565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016117b091906152f5565b606060405180830381865af41580156117cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ef9190615801565b50915091508184604001511461181b5760405163089938b360e11b8152600481018390526024016109cb565b806001600160401b03168460c001516001600160401b0316111561185d57604051632e19bc2d60e11b81526001600160401b03821660048201526024016109cb565b5050505b61186a84613119565b505061188260015f80516020615de083398151915255565b5050565b60408051610180810182525f610120820181815261014083018290526101608301829052825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052906118ed612a4d565b90506040518061012001604052806119036132ee565b8152825460208201526001830154604082015260028301546001600160401b0381166060830152600160401b810461ffff166080830152600160501b900460ff1660a0820152600383015460c082015260048301546001600160a01b031660e082015260059092015461010090920191909152919050565b5f611984612a4d565b90506001600160a01b0382166119b85760405163caa903f960e01b81526001600160a01b03831660048201526024016109cb565b5f8381526006820160205260409020546001600160a01b031633146119fe57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016109cb565b5f928352600b01602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b5f611a35612a4d565b90505f611a41836120bc565b5190506004816005811115611a5857611a58615029565b14611a78578060405163170cc93360e21b81526004016109cb91906151bb565b5f8381526006830160205260409020546001600160a01b03163314611a9d57336119d9565b5f83815260068301602052604090205461083f906001600160a01b03168461309d565b610ace848484846122fd565b5f80516020615da08339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611aff8661266f565b604001516040518263ffffffff1660e01b8152600401611b1f91906152f5565b6040805180830381865af4158015611b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5d919061584d565b9150915080611b8357604051632d07135360e01b815281151560048201526024016109cb565b5f82815260048401602052604090208054611b9d90615189565b90505f03611bc15760405163089938b360e11b8152600481018390526024016109cb565b60015f838152600580860160205260409091205460ff1690811115611be857611be8615029565b14611c1b575f8281526005840160205260409081902054905163170cc93360e21b81526109cb9160ff16906004016151bb565b5f8281526004840160205260408120611c3391614ca2565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f611ccb612cae565b611cd78484843461334f565b9050611cef60015f80516020615de083398151915255565b9392505050565b5f611cff612a4d565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611d3857611d38615029565b6003811115611d4957611d49615029565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611dc257611dc2615029565b14158015611de35750600381516003811115611de057611de0615029565b14155b15611e04578051604051633b0d540d60e21b81526109cb91906004016157e7565b5f611e1282604001516120bc565b905080606001516001600160401b03165f03611e44576040516339b894f960e21b8152600481018590526024016109cb565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611eb293906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611ecc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ef391908101906152c4565b6040518263ffffffff1660e01b8152600401611f0f91906152f5565b6020604051808303815f875af1158015611f2b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112479190615307565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020615da08339815191529190611f9690615189565b90505f03611fba5760405163089938b360e11b8152600481018390526024016109cb565b60015f838152600580840160205260409091205460ff1690811115611fe157611fe1615029565b14612014575f8281526005820160205260409081902054905163170cc93360e21b81526109cb9160ff16906004016151bb565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb9261204b9201615870565b6020604051808303815f875af1158015612067573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083f9190615307565b5f612094612cae565b61209f8233346134c4565b90506120b760015f80516020615de083398151915255565b919050565b6120c4614cd9565b5f8281525f80516020615dc0833981519152602052604090819020815160e0810190925280545f80516020615da0833981519152929190829060ff16600581111561211157612111615029565b600581111561212257612122615029565b815260200160018201805461213690615189565b80601f016020809104026020016040519081016040528092919081815260200182805461216290615189565b80156121ad5780601f10612184576101008083540402835291602001916121ad565b820191905f5260205f20905b81548152906001019060200180831161219057829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b03811661223d5760405163caa903f960e01b81526001600160a01b03821660048201526024016109cb565b5f612246612a4d565b5f8481526007820160205260409020549091506001600160a01b0361010090910416331461227457336119d9565b5f928352600901602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6040515f905f80516020615da0833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906122e590869086906158fa565b90815260200160405180910390205491505092915050565b6123098484848461233a565b610ace57604051631036cf9160e11b8152600481018590526024016109cb565b6123316136fd565b61132981613748565b5f80612344612a4d565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561237d5761237d615029565b600381111561238e5761238e615029565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f612404826120bc565b905060028351600381111561241b5761241b615029565b1461243c578251604051633b0d540d60e21b81526109cb91906004016157e7565b60208301516001600160a01b031633146124d8575f8281526006850160205260409020546001600160a01b0316331461247557336119d9565b5f82815260068501602052604090205460a08201516124a491600160b01b90046001600160401b03169061559c565b6001600160401b03164210156124d85760405163fb6ce63f60e01b81526001600160401b03421660048201526024016109cb565b6002815160058111156124ed576124ed615029565b0361260f576002840154608084015161250f916001600160401b03169061559c565b6001600160401b03164210156125435760405163fb6ce63f60e01b81526001600160401b03421660048201526024016109cb565b87156125555761255382886127ae565b505b5f8981526007850160205260409020805460ff191660031790556060830151608082015161258e9184916125899190615909565b6137c2565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b03909316929092179091556125d184888c613999565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506126679350505050565b60048151600581111561262457612624615029565b0361264b5761263483878b613999565b5061263e89613119565b6001945050505050612667565b805160405163170cc93360e21b81526109cb91906004016151bb565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156126d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526126fa9190810190615929565b915091508061271c57604051636b2f19e960e01b815260040160405180910390fd5b815115612742578151604051636ba589a560e01b815260048101919091526024016109cb565b60208201516001600160a01b03161561277e576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016109cb565b5092915050565b5f8061278f612a4d565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156127f9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128209190810190615929565b915091508061284257604051636b2f19e960e01b815260040160405180910390fd5b5f61284b612a4d565b6005810154845191925014612879578251604051636ba589a560e01b815260048101919091526024016109cb565b60208301516001600160a01b0316156128b5576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016109cb565b60208301516001600160a01b0316156128f1576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016109cb565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b815260040161292e91906152f5565b6040805180830381865af4158015612948573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296c91906159b9565b915091508188146129935760405163089938b360e11b8152600481018990526024016109cb565b5f8881526006840160205260409020600101546001600160401b039081169082161115612a24575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612a42565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f80612a7b612a4d565b90505f612a8787613b87565b9050612a9287612785565b612aa157600192505050612667565b5f8781526006830160205260409020546001600160a01b03163314612ac657336119d9565b5f87815260068301602052604090205460a0820151612af591600160b01b90046001600160401b03169061559c565b6001600160401b03168160c001516001600160401b03161015612b3c5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016109cb565b5f8615612b5457612b4d88876127ae565b9050612b72565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612b9790611600565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612c00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c249190615307565b90506001600160a01b038616612c50575f8981526006850160205260409020546001600160a01b031695505b5f898152600a8501602052604081208054839290612c6f9084906159dc565b90915550505f898152600b909401602052604090932080546001600160a01b0387166001600160a01b0319909116179055505015159050949350505050565b5f80516020615de0833981519152805460011901612cdf57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612cee614cd9565b5f80516020615da08339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612d218861266f565b604001516040518263ffffffff1660e01b8152600401612d4191906152f5565b6040805180830381865af4158015612d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7f919061584d565b915091508015612da657604051632d07135360e01b815281151560048201526024016109cb565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612ddd57612ddd615029565b6005811115612dee57612dee615029565b8152602001600182018054612e0290615189565b80601f0160208091040260200160405190810160405280929190818152602001828054612e2e90615189565b8015612e795780601f10612e5057610100808354040283529160200191612e79565b820191905f5260205f20905b815481529060010190602001808311612e5c57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612ee457612ee4615029565b14158015612f055750600181516005811115612f0257612f02615029565b14155b15612f2657805160405163170cc93360e21b81526109cb91906004016151bb565b600381516005811115612f3b57612f3b615029565b03612f495760048152612f4e565b600581525b836006018160200151604051612f649190615478565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115612fa757612fa7615029565b021790555060208201516001820190612fc090826154cd565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561306657613066615029565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6130a6612a4d565b5f838152600a8201602052604081208054919055909150610ace8482613e6c565b6118826001600160a01b03831682613eca565b60015f80516020615de083398151915255565b6130f984848484612a71565b610ace57604051635bff683f60e11b8152600481018590526024016109cb565b5f613122612a4d565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561315b5761315b615029565b600381111561316c5761316c615029565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506131e06132ee565b6020015182608001516131f3919061559c565b6001600160401b03164210156132275760405163fb6ce63f60e01b81526001600160401b03421660048201526024016109cb565b5f848152600784016020908152604080832080546001600160a81b03191681556001810184905560020183905560098601909152902080546001600160a01b031981169091556001600160a01b031680613282575060208201515b5f8061328f838886613f5d565b915091506132a885602001516113088760600151611600565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b604080516060810182525f80825260208201819052918101829052905f80516020615da083398151915260408051606081018252825481526001909201546001600160401b0381166020840152600160401b900460ff169082015292915050565b5f80613359612a4d565b600281015490915061ffff600160401b90910481169086161080613382575061271061ffff8616115b156133a657604051635f12e6c360e11b815261ffff861660048201526024016109cb565b60028101546001600160401b0390811690851610156133e2576040516202a06d60e11b81526001600160401b03851660048201526024016109cb565b80548310806133f45750806001015483115b156134155760405163222d164360e21b8152600481018490526024016109cb565b825f613420826111e7565b90505f61342d898361400a565b5f818152600686016020908152604080832080546001600160401b039c909c16600160b01b0267ffffffffffffffff60b01b1961ffff9e909e16600160a01b02336001600160b01b0319909e168e17179d909d169c909c178c556001909b01805467ffffffffffffffff19169055600b9096019095529790932080546001600160a01b031916909617909555509395945050505050565b5f806134ce612a4d565b90505f6134da846111e7565b90505f6134e6876120bc565b90506134f187612785565b613511576040516330efa98b60e01b8152600481018890526024016109cb565b60028151600581111561352657613526615029565b1461354757805160405163170cc93360e21b81526109cb91906004016151bb565b5f828260800151613558919061559c565b6002850154604084015191925061357a91600160501b90910460ff16906155de565b6001600160401b0316816001600160401b031611156135b757604051636d51fe0560e11b81526001600160401b03821660048201526024016109cb565b5f806135c38a846137c2565b915091505f8a836040516020016135f192919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661374657604051631afcd79f60e31b815260040160405180910390fd5b565b6137506136fd565b6137598161457c565b613761614595565b6113296060820135608083013561377e60c0850160a08601614eb5565b61378e60e0860160c087016159ef565b61379f610100870160e08801615a08565b6101008701356137b761014089016101208a0161531e565b8861014001356145a5565b5f8281525f80516020615dc0833981519152602052604081206002015481905f80516020615da083398151915290600160801b90046001600160401b031661380a8582614762565b5f613814876149cc565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156138bd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138e491908101906152c4565b6040518263ffffffff1660e01b815260040161390091906152f5565b6020604051808303815f875af115801561391c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139409190615307565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806139a3612a4d565b90505f6139b386604001516120bc565b90505f6003825160058111156139cb576139cb615029565b14806139e957506004825160058111156139e7576139e7615029565b145b156139f9575060c0810151613a36565b600282516005811115613a0e57613a0e615029565b03613a1a575042613a36565b815160405163170cc93360e21b81526109cb91906004016151bb565b86608001516001600160401b0316816001600160401b031611613a5e575f9350505050611cef565b600483015460608801515f916001600160a01b031690634f22429f90613a8390611600565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015613b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b289190615307565b90506001600160a01b038716613b4057876020015196505b5f8681526008850160209081526040808320849055600990960190529390932080546001600160a01b0388166001600160a01b031990911617905550909150509392505050565b613b8f614cd9565b5f8281525f80516020615dc08339815191526020526040808220815160e0810190925280545f80516020615da083398151915293929190829060ff166005811115613bdc57613bdc615029565b6005811115613bed57613bed615029565b8152602001600182018054613c0190615189565b80601f0160208091040260200160405190810160405280929190818152602001828054613c2d90615189565b8015613c785780601f10613c4f57610100808354040283529160200191613c78565b820191905f5260205f20905b815481529060010190602001808311613c5b57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613ce657613ce6615029565b14613d19575f8481526005830160205260409081902054905163170cc93360e21b81526109cb9160ff16906004016151bb565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff1916906001908490811115613d5e57613d5e615029565b021790555060208201516001820190613d7790826154cd565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613e1585826137c2565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015613eb8575f80fd5b505af115801561145c573d5f803e3d5ffd5b80471015613eed5760405163cd78605960e01b81523060048201526024016109cb565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613f36576040519150601f19603f3d011682016040523d82523d5f602084013e613f3b565b606091505b505090508061083f57604051630a12f52160e11b815260040160405180910390fd5b5f805f613f68612a4d565b5f86815260088201602052604081208054908290559192509081908015613ffc575f87815260068501602052604090205461271090613fb290600160a01b900461ffff1683615836565b613fbc91906157c8565b91508184600a015f8981526020019081526020015f205f828254613fe091906159dc565b90915550613ff090508282615a28565b9250613ffc8984613e6c565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff1661404e57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615da08339815191524261406d6060860160408701614eb5565b6001600160401b03161115806140a7575061408b6202a300426159dc565b61409b6060860160408701614eb5565b6001600160401b031610155b156140e1576140bc6060850160408601614eb5565b604051635879da1360e11b81526001600160401b0390911660048201526024016109cb565b60038101546001600160401b039061410490600160401b900482168583166159dc565b111561412e57604051633e1a785160e01b81526001600160401b03841660048201526024016109cb565b61414361413e6060860186615a3b565b614a41565b61415361413e6080860186615a3b565b60306141626020860186615a4f565b905014614194576141766020850185615a4f565b6040516326475b2f60e11b81526109cb925060040190815260200190565b61419e8480615a4f565b90505f036141cb576141b08480615a4f565b604051633e08a12560e11b81526004016109cb929190615a91565b5f600682016141da8680615a4f565b6040516141e89291906158fa565b90815260200160405180910390205414614221576142068480615a4f565b60405163a41f772f60e01b81526004016109cb929190615a91565b61422b835f614762565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016142688a80615a4f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906142b0908b018b615a4f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016142f960608b0160408c01614eb5565b6001600160401b0316815260200161431460608b018b615a3b565b61431d90615aa4565b815260200161432f60808b018b615a3b565b61433890615aa4565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016143669190615bd1565b5f60405180830381865af4158015614380573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143a79190810190615c88565b5f828152600486016020526040902091935091506143c582826154cd565b5081600684016143d58880615a4f565b6040516143e39291906158fa565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061441f9085906004016152f5565b6020604051808303815f875af115801561443b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061445f9190615307565b5f8481526005860160205260409020805460ff1916600117905590506144858780615a4f565b5f8581526005870160205260409020600101916144a3919083615ccb565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff19169055806145028880615a4f565b6040516145109291906158fa565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061454e9190614eb5565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b6145846136fd565b61458c614baa565b61132981614bb2565b61459d6136fd565b613746614c9a565b6145ad6136fd565b5f6145b6612a4d565b905061ffff861615806145ce575061271061ffff8716115b156145f257604051635f12e6c360e11b815261ffff871660048201526024016109cb565b878911156146165760405163222d164360e21b8152600481018a90526024016109cb565b60ff851615806146295750600a60ff8616115b1561464c5760405163170db35960e31b815260ff861660048201526024016109cb565b6146546132ee565b602001516001600160401b0316876001600160401b03161015614694576040516202a06d60e11b81526001600160401b03881660048201526024016109cb565b835f036146b45760405163a733007160e01b815260040160405180910390fd5b816146d557604051632f6bd1db60e01b8152600481018390526024016109cb565b978855600188019690965560028701805460ff909416600160501b0260ff60501b1961ffff909616600160401b0269ffffffffffffffffffff199095166001600160401b0390971696909617939093179390931693909317905560038401919091556004830180546001600160a01b039092166001600160a01b0319909216919091179055600590910155565b5f80516020615da08339815191525f6001600160401b0380841690851611156147965761478f8385615909565b90506147a3565b6147a08484615909565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b900490921660608201524291158061481057506001840154815161480c916001600160401b0316906159dc565b8210155b15614838576001600160401b0380841660608301528282526040820151166020820152614857565b828160600181815161484a919061559c565b6001600160401b03169052505b60608101516148679060646155de565b602082015160018601546001600160401b0392909216916148929190600160401b900460ff166155de565b6001600160401b031610156148cb57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016109cb565b85816040018181516148dd919061559c565b6001600160401b03169052506040810180518691906148fd908390615909565b6001600160401b03169052506001840154604082015160649161492b91600160401b90910460ff16906155de565b6001600160401b03161015614964576040808201519051633e1a785160e01b81526001600160401b0390911660048201526024016109cb565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020615dc08339815191526020526040812060020180545f80516020615da08339815191529190600890614a1690600160401b90046001600160401b0316615d84565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b614a4e6020820182614e88565b63ffffffff16158015614a6e5750614a696020820182615339565b151590505b15614ab557614a806020820182614e88565b614a8d6020830183615339565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016109cb565b614ac26020820182615339565b9050614ad16020830183614e88565b63ffffffff161115614aea57614a806020820182614e88565b60015b614afa6020830183615339565b905081101561188257614b106020830183615339565b614b1b600184615a28565b818110614b2a57614b2a61537e565b9050602002016020810190614b3f919061531e565b6001600160a01b0316614b556020840184615339565b83818110614b6557614b6561537e565b9050602002016020810190614b7a919061531e565b6001600160a01b03161015614ba257604051630dbc8d5f60e31b815260040160405180910390fd5b600101614aed565b6137466136fd565b614bba6136fd565b80355f80516020615da08339815191529081556014614bdf6060840160408501615a08565b60ff161180614bfe5750614bf96060830160408401615a08565b60ff16155b15614c3257614c136060830160408401615a08565b604051634a59bbff60e11b815260ff90911660048201526024016109cb565b614c426060830160408401615a08565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614c736040830160208401614eb5565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6130da6136fd565b508054614cae90615189565b5f825580601f10614cbd575050565b601f0160209004905f5260205f20908101906113299190614d16565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614d2a575f8155600101614d17565b5090565b8015158114611329575f80fd5b803563ffffffff811681146120b7575f80fd5b5f805f60608486031215614d60575f80fd5b833592506020840135614d7281614d2e565b9150614d8060408501614d3b565b90509250925092565b5f60208284031215614d99575f80fd5b5035919050565b5f6101608284031215614db1575f80fd5b50919050565b5f8060408385031215614dc8575f80fd5b82356001600160401b03811115614ddd575f80fd5b830160808186031215614dee575f80fd5b9150614dfc60208401614d3b565b90509250929050565b5f8060408385031215614e16575f80fd5b82359150614dfc60208401614d3b565b6001600160a01b0381168114611329575f80fd5b5f805f8060808587031215614e4d575f80fd5b843593506020850135614e5f81614d2e565b9250614e6d60408601614d3b565b91506060850135614e7d81614e26565b939692955090935050565b5f60208284031215614e98575f80fd5b611cef82614d3b565b6001600160401b0381168114611329575f80fd5b5f60208284031215614ec5575f80fd5b8135611cef81614ea1565b5f610160820190508251805183526001600160401b03602082015116602084015260ff60408201511660408401525060208301516060830152604083015160808301526060830151614f2d60a08401826001600160401b03169052565b50608083015161ffff811660c08401525060a083015160ff811660e08401525060c0830151610100818185015260e08501519150614f776101208501836001600160a01b03169052565b80850151610140850152505092915050565b5f8060408385031215614f9a575f80fd5b823591506020830135614fac81614e26565b809150509250929050565b803561ffff811681146120b7575f80fd5b5f805f60608486031215614fda575f80fd5b83356001600160401b03811115614fef575f80fd5b840160a08187031215615000575f80fd5b925061500e60208501614fb7565b9150604084013561501e81614ea1565b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b6006811061504d5761504d615029565b9052565b5f5b8381101561506b578181015183820152602001615053565b50505f910152565b5f815180845261508a816020860160208601615051565b601f01601f19169290920160200192915050565b602081526150b060208201835161503d565b5f602083015160e060408401526150cb610100840182615073565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f806020838503121561512f575f80fd5b82356001600160401b0380821115615145575f80fd5b818501915085601f830112615158575f80fd5b813581811115615166575f80fd5b866020828501011115615177575f80fd5b60209290920196919550909350505050565b600181811c9082168061519d57607f821691505b602082108103614db157634e487b7160e01b5f52602260045260245ffd5b60208101611235828461503d565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156151ff576151ff6151c9565b60405290565b604080519081016001600160401b03811182821017156151ff576151ff6151c9565b604051601f8201601f191681016001600160401b038111828210171561524f5761524f6151c9565b604052919050565b5f6001600160401b0382111561526f5761526f6151c9565b50601f01601f191660200190565b5f82601f83011261528c575f80fd5b815161529f61529a82615257565b615227565b8181528460208386010111156152b3575f80fd5b612667826020830160208701615051565b5f602082840312156152d4575f80fd5b81516001600160401b038111156152e9575f80fd5b6126678482850161527d565b602081525f611cef6020830184615073565b5f60208284031215615317575f80fd5b5051919050565b5f6020828403121561532e575f80fd5b8135611cef81614e26565b5f808335601e1984360301811261534e575f80fd5b8301803591506001600160401b03821115615367575f80fd5b6020019150600581901b3603821315613992575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126153a6575f80fd5b9190910192915050565b5f82601f8301126153bf575f80fd5b81356153cd61529a82615257565b8181528460208386010111156153e1575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561540d575f80fd5b6154156151dd565b82356001600160401b038082111561542b575f80fd5b615437368387016153b0565b8352602085013591508082111561544c575f80fd5b50615459368286016153b0565b602083015250604083013561546d81614ea1565b604082015292915050565b5f82516153a6818460208701615051565b601f82111561083f57805f5260205f20601f840160051c810160208510156154ae5750805b601f840160051c820191505b81811015611247575f81556001016154ba565b81516001600160401b038111156154e6576154e66151c9565b6154fa816154f48454615189565b84615489565b602080601f83116001811461552d575f84156155165750858301515b5f19600386901b1c1916600185901b17855561145c565b5f85815260208120601f198616915b8281101561555b5788860151825594840194600190910190840161553c565b508582101561557857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908082111561277e5761277e615588565b5f63ffffffff8083168181036155d4576155d4615588565b6001019392505050565b6001600160401b0381811683821602808216919082811461560157615601615588565b505092915050565b5f808335601e1984360301811261561e575f80fd5b83016020810192503590506001600160401b0381111561563c575f80fd5b803603821315613992575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561572757848303601f19018952813536889003605e190181126156ae575f80fd5b870160606156bc8280615609565b8287526156cc838801828461564a565b925050506156dc86830183615609565b868303888801526156ee83828461564a565b92505050604080830135925061570383614ea1565b6001600160401b039290921694909101939093529783019790830190600101615689565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561575881614e26565b6001600160a01b031660608381019190915283013536849003601e1901811261577f575f80fd5b83016020810190356001600160401b0381111561579a575f80fd5b8060051b36038213156157ab575f80fd5b6080808501526157bf60a085018284615672565b95945050505050565b5f826157e257634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106157fb576157fb615029565b91905290565b5f805f60608486031215615813575f80fd5b83519250602084015161582581614ea1565b604085015190925061501e81614ea1565b808202811582820484141761123557611235615588565b5f806040838503121561585e575f80fd5b825191506020830151614fac81614d2e565b5f60208083525f845461588281615189565b806020870152604060018084165f81146158a357600181146158bf576158ec565b60ff19851660408a0152604084151560051b8a010195506158ec565b895f5260205f205f5b858110156158e35781548b82018601529083019088016158c8565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0382811682821603908082111561277e5761277e615588565b5f806040838503121561593a575f80fd5b82516001600160401b0380821115615950575f80fd5b9084019060608287031215615963575f80fd5b61596b6151dd565b82518152602083015161597d81614e26565b6020820152604083015182811115615993575f80fd5b61599f8882860161527d565b6040830152508094505050506020830151614fac81614d2e565b5f80604083850312156159ca575f80fd5b825191506020830151614fac81614ea1565b8082018082111561123557611235615588565b5f602082840312156159ff575f80fd5b611cef82614fb7565b5f60208284031215615a18575f80fd5b813560ff81168114611cef575f80fd5b8181038181111561123557611235615588565b5f8235603e198336030181126153a6575f80fd5b5f808335601e19843603018112615a64575f80fd5b8301803591506001600160401b03821115615a7d575f80fd5b602001915036819003821315613992575f80fd5b602081525f61266760208301848661564a565b5f60408236031215615ab4575f80fd5b615abc615205565b615ac583614d3b565b81526020808401356001600160401b0380821115615ae1575f80fd5b9085019036601f830112615af3575f80fd5b813581811115615b0557615b056151c9565b8060051b9150615b16848301615227565b8181529183018401918481019036841115615b2f575f80fd5b938501935b83851015615b595784359250615b4983614e26565b8282529385019390850190615b34565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615bc65784516001600160a01b03168252938301936001929092019190830190615b9d565b509695505050505050565b60208152815160208201525f602083015160e06040840152615bf7610100840182615073565b90506040840151601f1980858403016060860152615c158383615073565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615c458383615b6b565b925060a08601519150808584030160c086015250615c638282615b6b565b91505060c0840151615c8060e08501826001600160401b03169052565b509392505050565b5f8060408385031215615c99575f80fd5b8251915060208301516001600160401b03811115615cb5575f80fd5b615cc18582860161527d565b9150509250929050565b6001600160401b03831115615ce257615ce26151c9565b615cf683615cf08354615189565b83615489565b5f601f841160018114615d27575f8515615d105750838201355b5f19600387901b1c1916600186901b178355611247565b5f83815260208120601f198716915b82811015615d565786850135825560209485019460019092019101615d36565b5086821015615d72575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b038083168181036155d4576155d461558856fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220676cdf66916ab7752a1045b3d6b4617c883017efb3bb60be196480c67785e6a864736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getDelegator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startingNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endingNonce\",\"type\":\"uint64\"}],\"internalType\":\"structDelegator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getPoSValidatorInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"internalType\":\"structPoSValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettings\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"initialWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"totalWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161622038038061622083398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6160d38061014d5f395ff3fe60806040526004361061025f575f3560e01c806380dd672f1161013f578063b771b3bc116100b3578063c974d1b611610078578063c974d1b6146107e5578063d5f20ff6146107f9578063df93d8de14610825578063e8682f7b1461083b578063fb8b11dd146108a7578063fd7ac5e7146108c6575f80fd5b8063b771b3bc1461075a578063ba3a4b9714610774578063bc5fbfec14610793578063bee0a03f146107b3578063c599e24f146107d2575f80fd5b80639ae06447116101045780639ae06447146105fe578063a3a65e481461061d578063a8099af21461063c578063a9778a7a146103e3578063af2f5feb14610714578063afb9809614610727575f80fd5b806380dd672f1461056c5780638280a25a1461058b57806385b4bb531461059f5780638ef34c98146105c057806393e24598146105df575f80fd5b806337b9be8f116101d657806360ad77841161019b57806360ad7784146104b057806362065856146104cf57806366435abf146104fc578063732214f81461051b57806376f786211461052e5780637d8d2f771461054d575f80fd5b806337b9be8f1461040b5780633a1cfff61461042a578063467ef06f146104495780635dd6a6cb1461046857806360305d6214610487575f80fd5b80631ec44724116102275780631ec447241461031d57806320d91b7a1461033c57806325e1c7761461035b5780632e2194d81461037a578063329c3e12146103b157806335455ded146103e3575f80fd5b80630118acc41461026357806302c588c4146102845780630322ed98146102b95780630ba512d1146102d8578063151d30d1146102f7575b5f80fd5b34801561026e575f80fd5b5061028261027d366004614f79565b6108e5565b005b34801561028f575f80fd5b506102a361029e366004614fb4565b6108f6565b6040516102b09190614ff3565b60405180910390f35b3480156102c4575f80fd5b506102826102d3366004614fb4565b6109e3565b3480156102e3575f80fd5b506102826102f2366004615062565b610c73565b348015610302575f80fd5b5061030b600a81565b60405160ff90911681526020016102b0565b348015610328575f80fd5b50610282610337366004614f79565b610d50565b348015610347575f80fd5b50610282610356366004615079565b610d5c565b348015610366575f80fd5b506102826103753660046150c7565b611312565b348015610385575f80fd5b50610399610394366004614fb4565b611386565b6040516001600160401b0390911681526020016102b0565b3480156103bc575f80fd5b506103cb6001600160991b0181565b6040516001600160a01b0390911681526020016102b0565b3480156103ee575f80fd5b506103f861271081565b60405161ffff90911681526020016102b0565b348015610416575f80fd5b506102826104253660046150fc565b6113da565b348015610435575f80fd5b50610282610444366004614f79565b6113ed565b348015610454575f80fd5b5061028261046336600461514a565b6113f9565b348015610473575f80fd5b506102826104823660046150fc565b6114cb565b348015610492575f80fd5b5061049b601481565b60405163ffffffff90911681526020016102b0565b3480156104bb575f80fd5b506102826104ca3660046150c7565b6114d7565b3480156104da575f80fd5b506104ee6104e9366004615177565b61179f565b6040519081526020016102b0565b348015610507575f80fd5b50610399610516366004614fb4565b6117bf565b348015610526575f80fd5b506104ee5f81565b348015610539575f80fd5b50610282610548366004614f79565b6117d3565b348015610558575f80fd5b506102826105673660046150fc565b6117df565b348015610577575f80fd5b506102826105863660046150c7565b6117eb565b348015610596575f80fd5b5061030b603081565b3480156105aa575f80fd5b506105b3611a25565b6040516102b09190615192565b3480156105cb575f80fd5b506102826105da36600461524b565b611b1a565b3480156105ea575f80fd5b506102826105f9366004614fb4565b611bcb565b348015610609575f80fd5b506102826106183660046150fc565b611c5f565b348015610628575f80fd5b5061028261063736600461514a565b611c6b565b348015610647575f80fd5b5060408051608080820183525f8083526020808401829052838501829052606093840191909152835180830185527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb02548082527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb03546001600160401b03808216848601908152600160401b83048216858a01908152600160801b909304821694880194855288519384525181169483019490945251831695810195909552511691830191909152016102b0565b6104ee61072236600461528a565b611e61565b348015610732575f80fd5b506104ee7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b348015610765575f80fd5b506103cb6005600160991b0181565b34801561077f575f80fd5b5061028261078e366004614fb4565b611e95565b34801561079e575f80fd5b506104ee5f8051602061603e83398151915281565b3480156107be575f80fd5b506102826107cd366004614fb4565b6120ee565b6104ee6107e0366004614fb4565b61222a565b3480156107f0575f80fd5b5061030b601481565b348015610804575f80fd5b50610818610813366004614fb4565b61225b565b6040516102b09190615348565b348015610830575f80fd5b506103996202a30081565b348015610846575f80fd5b5061085a610855366004614fb4565b6123aa565b6040805182516001600160a01b0316815260208084015161ffff1690820152828201516001600160401b0390811692820192909252606092830151909116918101919091526080016102b0565b3480156108b2575f80fd5b506102826108c136600461524b565b612436565b3480156108d1575f80fd5b506104ee6108e03660046153c8565b6124cd565b6108f18383835f612528565b505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610936612554565b5f838152600791909101602052604090819020815160e081019092528054829060ff16600381111561096a5761096a614fcb565b600381111561097b5761097b614fcb565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015292915050565b5f8181525f8051602061605e8339815191526020526040808220815160e0810190925280545f8051602061603e83398151915293929190829060ff166005811115610a3057610a30614fcb565b6005811115610a4157610a41614fcb565b8152602001600182018054610a5590615433565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8190615433565b8015610acc5780601f10610aa357610100808354040283529160200191610acc565b820191905f5260205f20905b815481529060010190602001808311610aaf57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610b3757610b37614fcb565b14610b73575f8381526005830160205260409081902054905163170cc93360e21b8152610b6a9160ff1690600401615465565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610bea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c11919081019061556e565b6040518263ffffffff1660e01b8152600401610c2d919061559f565b6020604051808303815f875af1158015610c49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6d91906155b1565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610cbc575080546001600160401b03808416911610155b15610cda5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d0483612578565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610c6d8383835f612589565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f8051602061603e8339815191529060ff1615610dae57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1591906155b1565b836020013514610e3e576040516372b0a7e760e11b815260208401356004820152602401610b6a565b30610e4f60608501604086016155c8565b6001600160a01b031614610e9257610e6d60608401604085016155c8565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610b6a565b5f610ea060608501856155e3565b905090505f805b828163ffffffff161015611108575f610ec360608801886155e3565b8363ffffffff16818110610ed957610ed9615628565b9050602002810190610eeb919061563c565b610ef4906156a7565b80516040519192505f916006880191610f0c91615722565b90815260200160405180910390205414610f3c57805160405163a41f772f60e01b8152610b6a919060040161559f565b5f6002885f013584604051602001610f6b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610f8591615722565b602060405180830381855afa158015610fa0573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fc391906155b1565b90508086600601835f0151604051610fdb9190615722565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff19166002178155825160019091019061101b9082615777565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff1916905561109b9085615846565b82516040519195506110ac91615722565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a350508061110190615866565b9050610ea7565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b038416810291909117909155600184015460649161114b910460ff1683615888565b6001600160401b0316101561117e57604051633e1a785160e01b81526001600160401b0382166004820152602401610b6a565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846111a2876128be565b604001516040518263ffffffff1660e01b81526004016111c2919061559f565b602060405180830381865af41580156111dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120191906155b1565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b815260040161123b91906159de565b5f60405180830381865af4158015611255573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261127c919081019061556e565b90505f60028260405161128f9190615722565b602060405180830381855afa1580156112aa573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112cd91906155b1565b90508281146112f95760405163baaea89d60e01b81526004810182905260248101849052604401610b6a565b5050506007909201805460ff1916600117905550505050565b61131b826129d4565b61133b576040516330efa98b60e01b815260048101839052602401610b6a565b5f6113458361225b565b519050600281600581111561135c5761135c614fcb565b1461137c578060405163170cc93360e21b8152600401610b6a9190615465565b610c6d83836129fd565b5f80611390612554565b6003015461139e9084615a72565b90508015806113b357506001600160401b0381115b156113d45760405163222d164360e21b815260048101849052602401610b6a565b92915050565b6113e684848484612589565b5050505050565b610c6d8383835f612c9c565b611401612ed9565b5f61140a612554565b90505f8061141784612f10565b91509150611424826129d4565b611430575050506114b2565b5f828152600684016020908152604080832054600b870190925290912080546001600160a01b031981169091556001600160a01b039182169116806114725750805b60048351600581111561148757611487614fcb565b036114965761149681856132c8565b6114ac826114a7856040015161179f565b6132f2565b50505050505b6114c860015f8051602061607e83398151915255565b50565b610c6d84848484613318565b5f6114e0612554565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561151957611519614fcb565b600381111561152a5761152a614fcb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6115a08261225b565b90506001835160038111156115b7576115b7614fcb565b146115d8578251604051633b0d540d60e21b8152610b6a9190600401615a91565b6004815160058111156115ed576115ed614fcb565b03611603576115fb86613344565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f611628896128be565b604001516040518263ffffffff1660e01b8152600401611648919061559f565b606060405180830381865af4158015611663573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116879190615a9f565b50915091508184146116b457846040015160405163089938b360e11b8152600401610b6a91815260200190565b806001600160401b031683606001516001600160401b031610806116ed5750806001600160401b03168560a001516001600160401b0316115b1561171657604051632e19bc2d60e11b81526001600160401b0382166004820152602401610b6a565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6117a8612554565b600301546113d4906001600160401b038416615ad4565b5f6117c98261225b565b6080015192915050565b6108f18383835f613318565b6113e684848484612c9c565b6117f3612ed9565b5f6117fc612554565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561183557611835614fcb565b600381111561184657611846614fcb565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156118bf576118bf614fcb565b146118e0578051604051633b0d540d60e21b8152610b6a9190600401615a91565b60046118ef826040015161225b565b51600581111561190157611901614fcb565b14611a00575f611910846128be565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161194f919061559f565b606060405180830381865af415801561196a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198e9190615a9f565b5091509150818460400151146119ba5760405163089938b360e11b815260048101839052602401610b6a565b806001600160401b03168460c001516001600160401b031611156119fc57604051632e19bc2d60e11b81526001600160401b0382166004820152602401610b6a565b5050505b611a0984613344565b5050611a2160015f8051602061607e83398151915255565b5050565b60408051610180810182525f610120820181815261014083018290526101608301829052825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905290611a8c612554565b9050604051806101200160405280611aa2613519565b8152825460208201526001830154604082015260028301546001600160401b0381166060830152600160401b810461ffff166080830152600160501b900460ff1660a0820152600383015460c082015260048301546001600160a01b031660e082015260059092015461010090920191909152919050565b5f611b23612554565b90506001600160a01b038216611b575760405163caa903f960e01b81526001600160a01b0383166004820152602401610b6a565b5f8381526006820160205260409020546001600160a01b03163314611b9d57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610b6a565b5f928352600b01602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b5f611bd4612554565b90505f611be08361225b565b5190506004816005811115611bf757611bf7614fcb565b14611c17578060405163170cc93360e21b8152600401610b6a9190615465565b5f8381526006830160205260409020546001600160a01b03163314611c3c5733611b78565b5f8381526006830160205260409020546108f1906001600160a01b0316846132c8565b610c6d84848484612528565b5f8051602061603e8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611c9e866128be565b604001516040518263ffffffff1660e01b8152600401611cbe919061559f565b6040805180830381865af4158015611cd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfc9190615aeb565b9150915080611d2257604051632d07135360e01b81528115156004820152602401610b6a565b5f82815260048401602052604090208054611d3c90615433565b90505f03611d605760405163089938b360e11b815260048101839052602401610b6a565b60015f838152600580860160205260409091205460ff1690811115611d8757611d87614fcb565b14611dba575f8281526005840160205260409081902054905163170cc93360e21b8152610b6a9160ff1690600401615465565b5f8281526004840160205260408120611dd291614ecd565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f611e6a612ed9565b611e768484843461357a565b9050611e8e60015f8051602061607e83398151915255565b9392505050565b5f611e9e612554565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611ed757611ed7614fcb565b6003811115611ee857611ee8614fcb565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611f6157611f61614fcb565b14158015611f825750600381516003811115611f7f57611f7f614fcb565b14155b15611fa3578051604051633b0d540d60e21b8152610b6a9190600401615a91565b5f611fb1826040015161225b565b905080606001516001600160401b03165f03611fe3576040516339b894f960e21b815260048101859052602401610b6a565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361205193906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561206b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612092919081019061556e565b6040518263ffffffff1660e01b81526004016120ae919061559f565b6020604051808303815f875af11580156120ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113e691906155b1565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f8051602061603e833981519152919061213590615433565b90505f036121595760405163089938b360e11b815260048101839052602401610b6a565b60015f838152600580840160205260409091205460ff169081111561218057612180614fcb565b146121b3575f8281526005820160205260409081902054905163170cc93360e21b8152610b6a9160ff1690600401615465565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb926121ea9201615b0e565b6020604051808303815f875af1158015612206573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f191906155b1565b5f612233612ed9565b61223e8233346136ef565b905061225660015f8051602061607e83398151915255565b919050565b612263614f04565b5f8281525f8051602061605e833981519152602052604090819020815160e0810190925280545f8051602061603e833981519152929190829060ff1660058111156122b0576122b0614fcb565b60058111156122c1576122c1614fcb565b81526020016001820180546122d590615433565b80601f016020809104026020016040519081016040528092919081815260200182805461230190615433565b801561234c5780601f106123235761010080835404028352916020019161234c565b820191905f5260205f20905b81548152906001019060200180831161232f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b604080516080810182525f8082526020820181905291810182905260608101919091526123d5612554565b5f9283526006016020908152604092839020835160808101855281546001600160a01b038116825261ffff600160a01b820416938201939093526001600160401b03600160b01b909304831694810194909452600101541660608301525090565b6001600160a01b0381166124685760405163caa903f960e01b81526001600160a01b0382166004820152602401610b6a565b5f612471612554565b5f8481526007820160205260409020549091506001600160a01b0361010090910416331461249f5733611b78565b5f928352600901602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6040515f905f8051602061603e833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906125109086908690615b98565b90815260200160405180910390205491505092915050565b61253484848484612589565b610c6d57604051631036cf9160e11b815260048101859052602401610b6a565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b612580613928565b6114c881613973565b5f80612593612554565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156125cc576125cc614fcb565b60038111156125dd576125dd614fcb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6126538261225b565b905060028351600381111561266a5761266a614fcb565b1461268b578251604051633b0d540d60e21b8152610b6a9190600401615a91565b60208301516001600160a01b03163314612727575f8281526006850160205260409020546001600160a01b031633146126c45733611b78565b5f82815260068501602052604090205460a08201516126f391600160b01b90046001600160401b031690615846565b6001600160401b03164210156127275760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610b6a565b60028151600581111561273c5761273c614fcb565b0361285e576002840154608084015161275e916001600160401b031690615846565b6001600160401b03164210156127925760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610b6a565b87156127a4576127a282886129fd565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516127dd9184916127d89190615ba7565b6139ed565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561282084888c613bc4565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506128b69350505050565b60048151600581111561287357612873614fcb565b0361289a5761288383878b613bc4565b5061288d89613344565b60019450505050506128b6565b805160405163170cc93360e21b8152610b6a9190600401615465565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612922573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129499190810190615bc7565b915091508061296b57604051636b2f19e960e01b815260040160405180910390fd5b815115612991578151604051636ba589a560e01b81526004810191909152602401610b6a565b60208201516001600160a01b0316156129cd576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610b6a565b5092915050565b5f806129de612554565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612a48573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a6f9190810190615bc7565b9150915080612a9157604051636b2f19e960e01b815260040160405180910390fd5b5f612a9a612554565b6005810154845191925014612ac8578251604051636ba589a560e01b81526004810191909152602401610b6a565b60208301516001600160a01b031615612b04576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610b6a565b60208301516001600160a01b031615612b40576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610b6a565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401612b7d919061559f565b6040805180830381865af4158015612b97573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bbb9190615c57565b91509150818814612be25760405163089938b360e11b815260048101899052602401610b6a565b5f8881526006840160205260409020600101546001600160401b039081169082161115612c73575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612c91565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b5f80612ca6612554565b90505f612cb287613db2565b9050612cbd876129d4565b612ccc576001925050506128b6565b5f8781526006830160205260409020546001600160a01b03163314612cf15733611b78565b5f87815260068301602052604090205460a0820151612d2091600160b01b90046001600160401b031690615846565b6001600160401b03168160c001516001600160401b03161015612d675760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610b6a565b5f8615612d7f57612d7888876129fd565b9050612d9d565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612dc29061179f565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612e2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e4f91906155b1565b90506001600160a01b038616612e7b575f8981526006850160205260409020546001600160a01b031695505b5f898152600a8501602052604081208054839290612e9a908490615c7a565b90915550505f898152600b909401602052604090932080546001600160a01b0387166001600160a01b0319909116179055505015159050949350505050565b5f8051602061607e833981519152805460011901612f0a57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612f19614f04565b5f8051602061603e8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612f4c886128be565b604001516040518263ffffffff1660e01b8152600401612f6c919061559f565b6040805180830381865af4158015612f86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612faa9190615aeb565b915091508015612fd157604051632d07135360e01b81528115156004820152602401610b6a565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff9091169081111561300857613008614fcb565b600581111561301957613019614fcb565b815260200160018201805461302d90615433565b80601f016020809104026020016040519081016040528092919081815260200182805461305990615433565b80156130a45780601f1061307b576101008083540402835291602001916130a4565b820191905f5260205f20905b81548152906001019060200180831161308757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561310f5761310f614fcb565b14158015613130575060018151600581111561312d5761312d614fcb565b14155b1561315157805160405163170cc93360e21b8152610b6a9190600401615465565b60038151600581111561316657613166614fcb565b036131745760048152613179565b600581525b83600601816020015160405161318f9190615722565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff19169060019084908111156131d2576131d2614fcb565b0217905550602082015160018201906131eb9082615777565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561329157613291614fcb565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6132d1612554565b5f838152600a8201602052604081208054919055909150610c6d8482614097565b611a216001600160a01b038316826140f5565b60015f8051602061607e83398151915255565b61332484848484612c9c565b610c6d57604051635bff683f60e11b815260048101859052602401610b6a565b5f61334d612554565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561338657613386614fcb565b600381111561339757613397614fcb565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015281015190915061340b613519565b60200151826080015161341e9190615846565b6001600160401b03164210156134525760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610b6a565b5f848152600784016020908152604080832080546001600160a81b03191681556001810184905560020183905560098601909152902080546001600160a01b031981169091556001600160a01b0316806134ad575060208201515b5f806134ba838886614188565b915091506134d385602001516114a7876060015161179f565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b604080516060810182525f80825260208201819052918101829052905f8051602061603e83398151915260408051606081018252825481526001909201546001600160401b0381166020840152600160401b900460ff169082015292915050565b5f80613584612554565b600281015490915061ffff600160401b909104811690861610806135ad575061271061ffff8616115b156135d157604051635f12e6c360e11b815261ffff86166004820152602401610b6a565b60028101546001600160401b03908116908516101561360d576040516202a06d60e11b81526001600160401b0385166004820152602401610b6a565b805483108061361f5750806001015483115b156136405760405163222d164360e21b815260048101849052602401610b6a565b825f61364b82611386565b90505f6136588983614235565b5f818152600686016020908152604080832080546001600160401b039c909c16600160b01b0267ffffffffffffffff60b01b1961ffff9e909e16600160a01b02336001600160b01b0319909e168e17179d909d169c909c178c556001909b01805467ffffffffffffffff19169055600b9096019095529790932080546001600160a01b031916909617909555509395945050505050565b5f806136f9612554565b90505f61370584611386565b90505f6137118761225b565b905061371c876129d4565b61373c576040516330efa98b60e01b815260048101889052602401610b6a565b60028151600581111561375157613751614fcb565b1461377257805160405163170cc93360e21b8152610b6a9190600401615465565b5f8282608001516137839190615846565b600285015460408401519192506137a591600160501b90910460ff1690615888565b6001600160401b0316816001600160401b031611156137e257604051636d51fe0560e11b81526001600160401b0382166004820152602401610b6a565b5f806137ee8a846139ed565b915091505f8a8360405160200161381c92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661397157604051631afcd79f60e31b815260040160405180910390fd5b565b61397b613928565b613984816147a7565b61398c6147c0565b6114c8606082013560808301356139a960c0850160a08601615177565b6139b960e0860160c08701615c8d565b6139ca610100870160e08801615ca6565b6101008701356139e261014089016101208a016155c8565b8861014001356147d0565b5f8281525f8051602061605e833981519152602052604081206002015481905f8051602061603e83398151915290600160801b90046001600160401b0316613a35858261498d565b5f613a3f87614bf7565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613ae8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613b0f919081019061556e565b6040518263ffffffff1660e01b8152600401613b2b919061559f565b6020604051808303815f875af1158015613b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b6b91906155b1565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f80613bce612554565b90505f613bde866040015161225b565b90505f600382516005811115613bf657613bf6614fcb565b1480613c145750600482516005811115613c1257613c12614fcb565b145b15613c24575060c0810151613c61565b600282516005811115613c3957613c39614fcb565b03613c45575042613c61565b815160405163170cc93360e21b8152610b6a9190600401615465565b86608001516001600160401b0316816001600160401b031611613c89575f9350505050611e8e565b600483015460608801515f916001600160a01b031690634f22429f90613cae9061179f565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015613d2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d5391906155b1565b90506001600160a01b038716613d6b57876020015196505b5f8681526008850160209081526040808320849055600990960190529390932080546001600160a01b0388166001600160a01b031990911617905550909150509392505050565b613dba614f04565b5f8281525f8051602061605e8339815191526020526040808220815160e0810190925280545f8051602061603e83398151915293929190829060ff166005811115613e0757613e07614fcb565b6005811115613e1857613e18614fcb565b8152602001600182018054613e2c90615433565b80601f0160208091040260200160405190810160405280929190818152602001828054613e5890615433565b8015613ea35780601f10613e7a57610100808354040283529160200191613ea3565b820191905f5260205f20905b815481529060010190602001808311613e8657829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613f1157613f11614fcb565b14613f44575f8481526005830160205260409081902054905163170cc93360e21b8152610b6a9160ff1690600401615465565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff1916906001908490811115613f8957613f89614fcb565b021790555060208201516001820190613fa29082615777565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f61404085826139ed565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b1580156140e3575f80fd5b505af11580156115fb573d5f803e3d5ffd5b804710156141185760405163cd78605960e01b8152306004820152602401610b6a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614161576040519150601f19603f3d011682016040523d82523d5f602084013e614166565b606091505b50509050806108f157604051630a12f52160e11b815260040160405180910390fd5b5f805f614193612554565b5f86815260088201602052604081208054908290559192509081908015614227575f878152600685016020526040902054612710906141dd90600160a01b900461ffff1683615ad4565b6141e79190615a72565b91508184600a015f8981526020019081526020015f205f82825461420b9190615c7a565b9091555061421b90508282615cc6565b92506142278984614097565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff1661427957604051637fab81e560e01b815260040160405180910390fd5b5f8051602061603e833981519152426142986060860160408701615177565b6001600160401b03161115806142d257506142b66202a30042615c7a565b6142c66060860160408701615177565b6001600160401b031610155b1561430c576142e76060850160408601615177565b604051635879da1360e11b81526001600160401b039091166004820152602401610b6a565b60038101546001600160401b039061432f90600160401b90048216858316615c7a565b111561435957604051633e1a785160e01b81526001600160401b0384166004820152602401610b6a565b61436e6143696060860186615cd9565b614c6c565b61437e6143696080860186615cd9565b603061438d6020860186615ced565b9050146143bf576143a16020850185615ced565b6040516326475b2f60e11b8152610b6a925060040190815260200190565b6143c98480615ced565b90505f036143f6576143db8480615ced565b604051633e08a12560e11b8152600401610b6a929190615d2f565b5f600682016144058680615ced565b604051614413929190615b98565b9081526020016040518091039020541461444c576144318480615ced565b60405163a41f772f60e01b8152600401610b6a929190615d2f565b614456835f61498d565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016144938a80615ced565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906144db908b018b615ced565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161452460608b0160408c01615177565b6001600160401b0316815260200161453f60608b018b615cd9565b61454890615d42565b815260200161455a60808b018b615cd9565b61456390615d42565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016145919190615e6f565b5f60405180830381865af41580156145ab573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526145d29190810190615f26565b5f828152600486016020526040902091935091506145f08282615777565b5081600684016146008880615ced565b60405161460e929190615b98565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061464a90859060040161559f565b6020604051808303815f875af1158015614666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061468a91906155b1565b5f8481526005860160205260409020805460ff1916600117905590506146b08780615ced565b5f8581526005870160205260409020600101916146ce919083615f69565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061472d8880615ced565b60405161473b929190615b98565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b60400160208101906147799190615177565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b6147af613928565b6147b7614dd5565b6114c881614ddd565b6147c8613928565b613971614ec5565b6147d8613928565b5f6147e1612554565b905061ffff861615806147f9575061271061ffff8716115b1561481d57604051635f12e6c360e11b815261ffff87166004820152602401610b6a565b878911156148415760405163222d164360e21b8152600481018a9052602401610b6a565b60ff851615806148545750600a60ff8616115b156148775760405163170db35960e31b815260ff86166004820152602401610b6a565b61487f613519565b602001516001600160401b0316876001600160401b031610156148bf576040516202a06d60e11b81526001600160401b0388166004820152602401610b6a565b835f036148df5760405163a733007160e01b815260040160405180910390fd5b8161490057604051632f6bd1db60e01b815260048101839052602401610b6a565b978855600188019690965560028701805460ff909416600160501b0260ff60501b1961ffff909616600160401b0269ffffffffffffffffffff199095166001600160401b0390971696909617939093179390931693909317905560038401919091556004830180546001600160a01b039092166001600160a01b0319909216919091179055600590910155565b5f8051602061603e8339815191525f6001600160401b0380841690851611156149c1576149ba8385615ba7565b90506149ce565b6149cb8484615ba7565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b9004909216606082015242911580614a3b575060018401548151614a37916001600160401b031690615c7a565b8210155b15614a63576001600160401b0380841660608301528282526040820151166020820152614a82565b8281606001818151614a759190615846565b6001600160401b03169052505b6060810151614a92906064615888565b602082015160018601546001600160401b039290921691614abd9190600160401b900460ff16615888565b6001600160401b03161015614af657606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610b6a565b8581604001818151614b089190615846565b6001600160401b0316905250604081018051869190614b28908390615ba7565b6001600160401b031690525060018401546040820151606491614b5691600160401b90910460ff1690615888565b6001600160401b03161015614b8f576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610b6a565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f8051602061605e8339815191526020526040812060020180545f8051602061603e8339815191529190600890614c4190600160401b90046001600160401b0316616022565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b614c79602082018261514a565b63ffffffff16158015614c995750614c9460208201826155e3565b151590505b15614ce057614cab602082018261514a565b614cb860208301836155e3565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610b6a565b614ced60208201826155e3565b9050614cfc602083018361514a565b63ffffffff161115614d1557614cab602082018261514a565b60015b614d2560208301836155e3565b9050811015611a2157614d3b60208301836155e3565b614d46600184615cc6565b818110614d5557614d55615628565b9050602002016020810190614d6a91906155c8565b6001600160a01b0316614d8060208401846155e3565b83818110614d9057614d90615628565b9050602002016020810190614da591906155c8565b6001600160a01b03161015614dcd57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614d18565b613971613928565b614de5613928565b80355f8051602061603e8339815191529081556014614e0a6060840160408501615ca6565b60ff161180614e295750614e246060830160408401615ca6565b60ff16155b15614e5d57614e3e6060830160408401615ca6565b604051634a59bbff60e11b815260ff9091166004820152602401610b6a565b614e6d6060830160408401615ca6565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614e9e6040830160208401615177565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b613305613928565b508054614ed990615433565b5f825580601f10614ee8575050565b601f0160209004905f5260205f20908101906114c89190614f41565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614f55575f8155600101614f42565b5090565b80151581146114c8575f80fd5b803563ffffffff81168114612256575f80fd5b5f805f60608486031215614f8b575f80fd5b833592506020840135614f9d81614f59565b9150614fab60408501614f66565b90509250925092565b5f60208284031215614fc4575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b60048110614fef57614fef614fcb565b9052565b5f60e082019050615005828451614fdf565b60018060a01b0360208401511660208301526040830151604083015260608301516001600160401b0380821660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b5f6101608284031215615073575f80fd5b50919050565b5f806040838503121561508a575f80fd5b82356001600160401b0381111561509f575f80fd5b8301608081860312156150b0575f80fd5b91506150be60208401614f66565b90509250929050565b5f80604083850312156150d8575f80fd5b823591506150be60208401614f66565b6001600160a01b03811681146114c8575f80fd5b5f805f806080858703121561510f575f80fd5b84359350602085013561512181614f59565b925061512f60408601614f66565b9150606085013561513f816150e8565b939692955090935050565b5f6020828403121561515a575f80fd5b611e8e82614f66565b6001600160401b03811681146114c8575f80fd5b5f60208284031215615187575f80fd5b8135611e8e81615163565b5f610160820190508251805183526001600160401b03602082015116602084015260ff604082015116604084015250602083015160608301526040830151608083015260608301516151ef60a08401826001600160401b03169052565b50608083015161ffff811660c08401525060a083015160ff811660e08401525060c0830151610100818185015260e085015191506152396101208501836001600160a01b03169052565b80850151610140850152505092915050565b5f806040838503121561525c575f80fd5b82359150602083013561526e816150e8565b809150509250929050565b803561ffff81168114612256575f80fd5b5f805f6060848603121561529c575f80fd5b83356001600160401b038111156152b1575f80fd5b840160a081870312156152c2575f80fd5b92506152d060208501615279565b915060408401356152e081615163565b809150509250925092565b60068110614fef57614fef614fcb565b5f5b838110156153155781810151838201526020016152fd565b50505f910152565b5f81518084526153348160208601602086016152fb565b601f01601f19169290920160200192915050565b6020815261535a6020820183516152eb565b5f602083015160e0604084015261537561010084018261531d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156153d9575f80fd5b82356001600160401b03808211156153ef575f80fd5b818501915085601f830112615402575f80fd5b813581811115615410575f80fd5b866020828501011115615421575f80fd5b60209290920196919550909350505050565b600181811c9082168061544757607f821691505b60208210810361507357634e487b7160e01b5f52602260045260245ffd5b602081016113d482846152eb565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156154a9576154a9615473565b60405290565b604080519081016001600160401b03811182821017156154a9576154a9615473565b604051601f8201601f191681016001600160401b03811182821017156154f9576154f9615473565b604052919050565b5f6001600160401b0382111561551957615519615473565b50601f01601f191660200190565b5f82601f830112615536575f80fd5b815161554961554482615501565b6154d1565b81815284602083860101111561555d575f80fd5b6128b68260208301602087016152fb565b5f6020828403121561557e575f80fd5b81516001600160401b03811115615593575f80fd5b6128b684828501615527565b602081525f611e8e602083018461531d565b5f602082840312156155c1575f80fd5b5051919050565b5f602082840312156155d8575f80fd5b8135611e8e816150e8565b5f808335601e198436030181126155f8575f80fd5b8301803591506001600160401b03821115615611575f80fd5b6020019150600581901b3603821315613bbd575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615650575f80fd5b9190910192915050565b5f82601f830112615669575f80fd5b813561567761554482615501565b81815284602083860101111561568b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156156b7575f80fd5b6156bf615487565b82356001600160401b03808211156156d5575f80fd5b6156e13683870161565a565b835260208501359150808211156156f6575f80fd5b506157033682860161565a565b602083015250604083013561571781615163565b604082015292915050565b5f82516156508184602087016152fb565b601f8211156108f157805f5260205f20601f840160051c810160208510156157585750805b601f840160051c820191505b818110156113e6575f8155600101615764565b81516001600160401b0381111561579057615790615473565b6157a48161579e8454615433565b84615733565b602080601f8311600181146157d7575f84156157c05750858301515b5f19600386901b1c1916600185901b1785556115fb565b5f85815260208120601f198616915b82811015615805578886015182559484019460019091019084016157e6565b508582101561582257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156129cd576129cd615832565b5f63ffffffff80831681810361587e5761587e615832565b6001019392505050565b6001600160401b038181168382160280821691908281146158ab576158ab615832565b505092915050565b5f808335601e198436030181126158c8575f80fd5b83016020810192503590506001600160401b038111156158e6575f80fd5b803603821315613bbd575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156159d157848303601f19018952813536889003605e19018112615958575f80fd5b8701606061596682806158b3565b82875261597683880182846158f4565b92505050615986868301836158b3565b868303888801526159988382846158f4565b9250505060408083013592506159ad83615163565b6001600160401b039290921694909101939093529783019790830190600101615933565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135615a02816150e8565b6001600160a01b031660608381019190915283013536849003601e19018112615a29575f80fd5b83016020810190356001600160401b03811115615a44575f80fd5b8060051b3603821315615a55575f80fd5b608080850152615a6960a08501828461591c565b95945050505050565b5f82615a8c57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016113d48284614fdf565b5f805f60608486031215615ab1575f80fd5b835192506020840151615ac381615163565b60408501519092506152e081615163565b80820281158282048414176113d4576113d4615832565b5f8060408385031215615afc575f80fd5b82519150602083015161526e81614f59565b5f60208083525f8454615b2081615433565b806020870152604060018084165f8114615b415760018114615b5d57615b8a565b60ff19851660408a0152604084151560051b8a01019550615b8a565b895f5260205f205f5b85811015615b815781548b8201860152908301908801615b66565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038281168282160390808211156129cd576129cd615832565b5f8060408385031215615bd8575f80fd5b82516001600160401b0380821115615bee575f80fd5b9084019060608287031215615c01575f80fd5b615c09615487565b825181526020830151615c1b816150e8565b6020820152604083015182811115615c31575f80fd5b615c3d88828601615527565b604083015250809450505050602083015161526e81614f59565b5f8060408385031215615c68575f80fd5b82519150602083015161526e81615163565b808201808211156113d4576113d4615832565b5f60208284031215615c9d575f80fd5b611e8e82615279565b5f60208284031215615cb6575f80fd5b813560ff81168114611e8e575f80fd5b818103818111156113d4576113d4615832565b5f8235603e19833603018112615650575f80fd5b5f808335601e19843603018112615d02575f80fd5b8301803591506001600160401b03821115615d1b575f80fd5b602001915036819003821315613bbd575f80fd5b602081525f6128b66020830184866158f4565b5f60408236031215615d52575f80fd5b615d5a6154af565b615d6383614f66565b81526020808401356001600160401b0380821115615d7f575f80fd5b9085019036601f830112615d91575f80fd5b813581811115615da357615da3615473565b8060051b9150615db48483016154d1565b8181529183018401918481019036841115615dcd575f80fd5b938501935b83851015615df75784359250615de7836150e8565b8282529385019390850190615dd2565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615e645784516001600160a01b03168252938301936001929092019190830190615e3b565b509695505050505050565b60208152815160208201525f602083015160e06040840152615e9561010084018261531d565b90506040840151601f1980858403016060860152615eb3838361531d565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615ee38383615e09565b925060a08601519150808584030160c086015250615f018282615e09565b91505060c0840151615f1e60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615f37575f80fd5b8251915060208301516001600160401b03811115615f53575f80fd5b615f5f85828601615527565b9150509250929050565b6001600160401b03831115615f8057615f80615473565b615f9483615f8e8354615433565b83615733565b5f601f841160018114615fc5575f8515615fae5750838201355b5f19600387901b1c1916600186901b1783556113e6565b5f83815260208120601f198716915b82811015615ff45786850135825560209485019460019092019101615fd4565b5086821015616010575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b0380831681810361587e5761587e61583256fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122036c697f7378301e2d393f8c21be5fe0eadf7fe3fb40ed352fa8c44e36993ea5464736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -657,6 +676,68 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPME return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) } +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetDelegator(opts *bind.CallOpts, delegationID [32]byte) (Delegator, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getDelegator", delegationID) + + if err != nil { + return *new(Delegator), err + } + + out0 := *abi.ConvertType(out[0], new(Delegator)).(*Delegator) + + return out0, err + +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _NativeTokenStakingManager.Contract.GetDelegator(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _NativeTokenStakingManager.Contract.GetDelegator(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetPoSValidatorInfo(opts *bind.CallOpts, validationID [32]byte) (PoSValidatorInfo, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getPoSValidatorInfo", validationID) + + if err != nil { + return *new(PoSValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(PoSValidatorInfo)).(*PoSValidatorInfo) + + return out0, err + +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _NativeTokenStakingManager.Contract.GetPoSValidatorInfo(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _NativeTokenStakingManager.Contract.GetPoSValidatorInfo(&_NativeTokenStakingManager.CallOpts, validationID) +} + // GetSettings is a free data retrieval call binding the contract method 0x85b4bb53. // // Solidity: function getSettings() view returns(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,uint256,address,bytes32)) diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 50feff5f3..73cd7e67c 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -328,6 +328,25 @@ abstract contract PoSValidatorManager is }); } + /** + * @notice Returns the validator info for the given validation ID. + * @param validationID ID of the validtor being queried. + */ + function getPoSValidatorInfo(bytes32 validationID) + external + view + returns (PoSValidatorInfo memory) + { + return _getPoSValidatorManagerStorage()._posValidatorInfo[validationID]; + } + + /** + * @notice Returns the delegator info for the given delegation ID. + */ + function getDelegator(bytes32 delegationID) external view returns (Delegator memory) { + return _getPoSValidatorManagerStorage()._delegatorStakes[delegationID]; + } + /** * @dev Helper function that initializes the end of a PoS validation period. * Returns false if it is possible for the validator to claim rewards, but it is not eligible.