// This file was autogenerated by Hardhat, do not edit it. // prettier-ignore // tslint:disable // eslint-disable // biome-ignore format: see above export interface Enclave$Type { readonly _format: "hh3-artifact-1"; readonly contractName: "Enclave"; readonly sourceName: "contracts/Enclave.sol"; readonly abi: [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"size","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"BelowMinCommitteeSize","type":"error"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"BelowMinThreshold","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"BpsExceedsMax","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CiphertextOutputAlreadyPublished","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CiphertextOutputNotPublished","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"CommitteeDutiesCompleted","type":"error"},{"inputs":[],"name":"CommitteeSelectionFailed","type":"error"},{"inputs":[{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"}],"name":"CommitteeSizeNotConfigured","type":"error"},{"inputs":[{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"}],"name":"CommitteeSizeTooSmall","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3AlreadyComplete","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3AlreadyFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3DoesNotExist","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"E3NotFailed","type":"error"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramNotAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"FailureConditionNotMet","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"FeeTokenNotAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"inputDeadline","type":"uint256"}],"name":"InputDeadlineNotReached","type":"error"},{"inputs":[{"internalType":"contract IBondingRegistry","name":"bondingRegistry","type":"address"}],"name":"InvalidBondingRegistry","type":"error"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"ciphernodeRegistry","type":"address"}],"name":"InvalidCiphernodeRegistry","type":"error"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"InvalidDuration","type":"error"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"InvalidEncryptionScheme","type":"error"},{"inputs":[{"internalType":"contract IERC20","name":"feeToken","type":"address"}],"name":"InvalidFeeToken","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"InvalidInputDeadline","type":"error"},{"inputs":[{"internalType":"uint256","name":"end","type":"uint256"}],"name":"InvalidInputDeadlineEnd","type":"error"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"}],"name":"InvalidInputDeadlineStart","type":"error"},{"inputs":[{"internalType":"bytes","name":"output","type":"bytes"}],"name":"InvalidOutput","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"enum IEnclave.E3Stage","name":"expected","type":"uint8"},{"internalType":"enum IEnclave.E3Stage","name":"actual","type":"uint8"}],"name":"InvalidStage","type":"error"},{"inputs":[],"name":"InvalidThresholdValues","type":"error"},{"inputs":[],"name":"InvalidTimeoutWindow","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"gracePeriodEnds","type":"uint256"}],"name":"MarkE3FailedInGracePeriod","type":"error"},{"inputs":[],"name":"MinSizeBelowMinThreshold","type":"error"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"ModuleAlreadyEnabled","type":"error"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"ModuleNotEnabled","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"NoPaymentToRefund","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NothingToClaim","type":"error"},{"inputs":[],"name":"OnlyCiphernodeRegistry","type":"error"},{"inputs":[],"name":"OnlyCiphernodeRegistryOrSlashingManager","type":"error"},{"inputs":[],"name":"OnlySlashingManager","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"PaymentRequired","type":"error"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"PlaintextOutputAlreadyPublished","type":"error"},{"inputs":[],"name":"ProofRequired","type":"error"},{"inputs":[],"name":"RenounceOwnershipDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"ThresholdTooSmall","type":"error"},{"inputs":[],"name":"TreasuryRequired","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"UtilizationBpsExceedsMax","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"bondingRegistry","type":"address"}],"name":"BondingRegistrySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ciphernodeRegistry","type":"address"}],"name":"CiphernodeRegistrySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"ciphertextOutput","type":"bytes"}],"name":"CiphertextOutputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CommitteeFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"CommitteeFormed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum IEnclave.CommitteeSize","name":"size","type":"uint8"},{"indexed":false,"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"}],"name":"CommitteeThresholdsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"enum IEnclave.E3Stage","name":"failedAtStage","type":"uint8"},{"indexed":false,"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"name":"E3Failed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"honestNodeCount","type":"uint256"}],"name":"E3FailureProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3ProgramEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"e3RefundManager","type":"address"}],"name":"E3RefundManagerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"e3Id","type":"uint256"},{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"bool","name":"proofAggregationEnabled","type":"bool"}],"indexed":false,"internalType":"struct E3","name":"e3","type":"tuple"},{"indexed":true,"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"E3Requested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"enum IEnclave.E3Stage","name":"previousStage","type":"uint8"},{"indexed":false,"internalType":"enum IEnclave.E3Stage","name":"newStage","type":"uint8"}],"name":"E3StageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"EncryptionSchemeDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"EncryptionSchemeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"FeeTokenAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"inputHash","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"InputPublished","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"name":"MarkFailedGracePeriodSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxDuration","type":"uint256"}],"name":"MaxDurationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"paramSet","type":"uint8"},{"indexed":false,"internalType":"bytes","name":"encodedParams","type":"bytes"}],"name":"ParamSetRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"paramSet","type":"uint8"},{"indexed":false,"internalType":"bytes","name":"previousEncodedParams","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"newEncodedParams","type":"bytes"}],"name":"ParamSetUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"indexed":true,"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"}],"name":"PkVerifierSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"proof","type":"bytes"}],"name":"PlaintextOutputPublished","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"keyGenFixedPerNode","type":"uint256"},{"internalType":"uint256","name":"keyGenPerEncryptionProof","type":"uint256"},{"internalType":"uint256","name":"coordinationPerPair","type":"uint256"},{"internalType":"uint256","name":"availabilityPerNodePerSec","type":"uint256"},{"internalType":"uint256","name":"decryptionPerNode","type":"uint256"},{"internalType":"uint256","name":"publicationBase","type":"uint256"},{"internalType":"uint256","name":"verificationPerProof","type":"uint256"},{"internalType":"address","name":"protocolTreasury","type":"address"},{"internalType":"uint16","name":"marginBps","type":"uint16"},{"internalType":"uint16","name":"protocolShareBps","type":"uint16"},{"internalType":"uint16","name":"dkgUtilizationBps","type":"uint16"},{"internalType":"uint16","name":"computeUtilizationBps","type":"uint16"},{"internalType":"uint16","name":"decryptUtilizationBps","type":"uint16"},{"internalType":"uint32","name":"minCommitteeSize","type":"uint32"},{"internalType":"uint32","name":"minThreshold","type":"uint32"}],"indexed":false,"internalType":"struct IEnclave.PricingConfig","name":"config","type":"tuple"}],"name":"PricingConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardCredited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"nodes","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"RewardsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SlashedFundsEscrowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"slashingManager","type":"address"}],"name":"SlashingManagerSet","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"}],"indexed":false,"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"name":"TimeoutConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"treasury","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TreasuryClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"e3Id","type":"uint256"},{"indexed":true,"internalType":"address","name":"treasury","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TreasuryCredited","type":"event"},{"inputs":[],"name":"MAX_COMMITTEE_SIZE","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DURATION_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MARGIN_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PROTOCOL_SHARE_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TIMEOUT_WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bondingRegistry","outputs":[{"internalType":"contract IBondingRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"checkFailureCondition","outputs":[{"internalType":"bool","name":"canFail","type":"bool"},{"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ciphernodeRegistry","outputs":[{"internalType":"contract ICiphernodeRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"claimReward","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"e3Ids","type":"uint256[]"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IEnclave.CommitteeSize","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"committeeThresholds","outputs":[{"internalType":"uint32","name":"threshold","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"decryptionVerifiers","outputs":[{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"disableE3Program","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"disableEncryptionScheme","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"e3Payments","outputs":[{"internalType":"uint256","name":"e3Payment","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"e3Programs","outputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"e3RefundManager","outputs":[{"internalType":"contract IE3RefundManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"e3s","outputs":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"bool","name":"proofAggregationEnabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IE3Program","name":"e3Program","type":"address"}],"name":"enableE3Program","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"escrowSlashedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getDeadlines","outputs":[{"components":[{"internalType":"uint256","name":"dkgDeadline","type":"uint256"},{"internalType":"uint256","name":"computeDeadline","type":"uint256"},{"internalType":"uint256","name":"decryptionDeadline","type":"uint256"}],"internalType":"struct IEnclave.E3Deadlines","name":"deadlines","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"getDecryptionVerifier","outputs":[{"internalType":"contract IDecryptionVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getE3","outputs":[{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"bool","name":"proofAggregationEnabled","type":"bool"}],"internalType":"struct E3","name":"e3","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"computeProviderParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"bool","name":"proofAggregationEnabled","type":"bool"}],"internalType":"struct IEnclave.E3RequestParams","name":"requestParams","type":"tuple"}],"name":"getE3Quote","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getE3Stage","outputs":[{"internalType":"enum IEnclave.E3Stage","name":"stage","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getFailureReason","outputs":[{"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"getPkVerifier","outputs":[{"internalType":"contract IPkVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPricingConfig","outputs":[{"components":[{"internalType":"uint256","name":"keyGenFixedPerNode","type":"uint256"},{"internalType":"uint256","name":"keyGenPerEncryptionProof","type":"uint256"},{"internalType":"uint256","name":"coordinationPerPair","type":"uint256"},{"internalType":"uint256","name":"availabilityPerNodePerSec","type":"uint256"},{"internalType":"uint256","name":"decryptionPerNode","type":"uint256"},{"internalType":"uint256","name":"publicationBase","type":"uint256"},{"internalType":"uint256","name":"verificationPerProof","type":"uint256"},{"internalType":"address","name":"protocolTreasury","type":"address"},{"internalType":"uint16","name":"marginBps","type":"uint16"},{"internalType":"uint16","name":"protocolShareBps","type":"uint16"},{"internalType":"uint16","name":"dkgUtilizationBps","type":"uint16"},{"internalType":"uint16","name":"computeUtilizationBps","type":"uint16"},{"internalType":"uint16","name":"decryptUtilizationBps","type":"uint16"},{"internalType":"uint32","name":"minCommitteeSize","type":"uint32"},{"internalType":"uint32","name":"minThreshold","type":"uint32"}],"internalType":"struct IEnclave.PricingConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"getRequester","outputs":[{"internalType":"address","name":"requester","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeoutConfig","outputs":[{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"}],"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract ICiphernodeRegistry","name":"_ciphernodeRegistry","type":"address"},{"internalType":"contract IBondingRegistry","name":"_bondingRegistry","type":"address"},{"internalType":"contract IE3RefundManager","name":"_e3RefundManager","type":"address"},{"internalType":"contract IERC20","name":"_feeToken","type":"address"},{"internalType":"uint256","name":"_maxDuration","type":"uint256"},{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"}],"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isFeeTokenAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"markE3Failed","outputs":[{"internalType":"enum IEnclave.FailureReason","name":"reason","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"markFailedGracePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nexte3Id","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"onCommitteeFinalized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"}],"name":"onCommitteePublished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"uint8","name":"reason","type":"uint8"}],"name":"onE3Failed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"paramSetRegistry","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"pendingTreasuryClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"}],"name":"pkVerifiers","outputs":[{"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"}],"name":"processE3Failure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"ciphertextOutput","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"publishCiphertextOutput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"publishPlaintextOutput","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"computeProviderParams","type":"bytes"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"bool","name":"proofAggregationEnabled","type":"bool"}],"internalType":"struct IEnclave.E3RequestParams","name":"requestParams","type":"tuple"}],"name":"request","outputs":[{"internalType":"uint256","name":"e3Id","type":"uint256"},{"components":[{"internalType":"uint256","name":"seed","type":"uint256"},{"internalType":"enum IEnclave.CommitteeSize","name":"committeeSize","type":"uint8"},{"internalType":"uint256","name":"requestBlock","type":"uint256"},{"internalType":"uint256[2]","name":"inputWindow","type":"uint256[2]"},{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IE3Program","name":"e3Program","type":"address"},{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"customParams","type":"bytes"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"},{"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"},{"internalType":"bytes32","name":"committeePublicKey","type":"bytes32"},{"internalType":"bytes32","name":"ciphertextOutput","type":"bytes32"},{"internalType":"bytes","name":"plaintextOutput","type":"bytes"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"bool","name":"proofAggregationEnabled","type":"bool"}],"internalType":"struct E3","name":"e3","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBondingRegistry","name":"_bondingRegistry","type":"address"}],"name":"setBondingRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ICiphernodeRegistry","name":"_ciphernodeRegistry","type":"address"}],"name":"setCiphernodeRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IEnclave.CommitteeSize","name":"size","type":"uint8"},{"internalType":"uint32[2]","name":"threshold","type":"uint32[2]"}],"name":"setCommitteeThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IDecryptionVerifier","name":"decryptionVerifier","type":"address"}],"name":"setDecryptionVerifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IE3RefundManager","name":"_e3RefundManager","type":"address"}],"name":"setE3RefundManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_feeToken","type":"address"}],"name":"setFeeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setFeeTokenAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gracePeriod","type":"uint256"}],"name":"setMarkFailedGracePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDuration","type":"uint256"}],"name":"setMaxDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"paramSet","type":"uint8"},{"internalType":"bytes","name":"encodedParams","type":"bytes"}],"name":"setParamSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"encryptionSchemeId","type":"bytes32"},{"internalType":"contract IPkVerifier","name":"pkVerifier","type":"address"}],"name":"setPkVerifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"keyGenFixedPerNode","type":"uint256"},{"internalType":"uint256","name":"keyGenPerEncryptionProof","type":"uint256"},{"internalType":"uint256","name":"coordinationPerPair","type":"uint256"},{"internalType":"uint256","name":"availabilityPerNodePerSec","type":"uint256"},{"internalType":"uint256","name":"decryptionPerNode","type":"uint256"},{"internalType":"uint256","name":"publicationBase","type":"uint256"},{"internalType":"uint256","name":"verificationPerProof","type":"uint256"},{"internalType":"address","name":"protocolTreasury","type":"address"},{"internalType":"uint16","name":"marginBps","type":"uint16"},{"internalType":"uint16","name":"protocolShareBps","type":"uint16"},{"internalType":"uint16","name":"dkgUtilizationBps","type":"uint16"},{"internalType":"uint16","name":"computeUtilizationBps","type":"uint16"},{"internalType":"uint16","name":"decryptUtilizationBps","type":"uint16"},{"internalType":"uint32","name":"minCommitteeSize","type":"uint32"},{"internalType":"uint32","name":"minThreshold","type":"uint32"}],"internalType":"struct IEnclave.PricingConfig","name":"config","type":"tuple"}],"name":"setPricingConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISlashingManager","name":"_slashingManager","type":"address"}],"name":"setSlashingManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"dkgWindow","type":"uint256"},{"internalType":"uint256","name":"computeWindow","type":"uint256"},{"internalType":"uint256","name":"decryptionWindow","type":"uint256"}],"internalType":"struct IEnclave.E3TimeoutConfig","name":"config","type":"tuple"}],"name":"setTimeoutConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slashingManager","outputs":[{"internalType":"contract ISlashingManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"treasuryClaim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]; readonly bytecode: "0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615eea806100d96000396000f3fe608060405234801561001057600080fd5b50600436106103225760003560e01c806301ffc9a71461032757806302a3a9c91461034f5780630ef81b2f1461036457806310bc62811461039a57806311bd61d9146103c357806315cce224146103eb5780631ba72945146103fe5780632712225914610411578063351c2edd1461042d57806336c5d38a1461044e5780634017daf01461047e5780634044de3214610411578063406ed35c146104ab5780634147a360146104cb5780634d600e5d146104eb5780634e92ec63146104fe5780634fc77264146105115780635d168418146105245780635d204718146105445780635eac623914610570578063647846a5146105835780636db5c8fd14610596578063715018a61461059f578063779a0606146105a757806379ba5097146105b25780637c8c3b4d146105ba5780637cfa9d74146105cd5780637deccb97146105e05780637edcd7ab146105ea5780637f10792d146105fd57806381476ec214610606578063830d718114610619578063858142431461062c57806386d63bee1461063f5780638da5cb5b146106525780638dcdd86b1461065a5780638e5ce3ad1461066d57806390173a41146106805780639117173c1461069557806392312386146106a8578063929a8faf146106bb57806398969e82146106dc57806399c6679d146107125780639c8570c81461073b5780639d0e5af61461074e5780639e57b93414610757578063a87f4ab91461076a578063a8990a2f146108bc578063ac3d2f42146108cf578063ae169a50146108f8578063bb2d1b821461090b578063bff232c11461091e578063c1ab0f1f14610931578063c4ccafa214610944578063cb64961714610967578063cbd1687214610970578063cf0f34c414610983578063cfbdc98d14610996578063d8afed3e146109c6578063e30c3978146109d9578063e53c1a93146109e1578063e59e469514610a1a578063ea71aa5714610a2d578063f0691cba14610a40578063f2fde38b14610a53578063f3ceba3a14610a66578063f81b8ef614610a87578063fad8e11114610a9a578063fbdb323714610aad578063fd2f3d0114610ad6575b600080fd5b61033a610335366004614744565b610ae9565b60405190151581526020015b60405180910390f35b61036261035d36600461478a565b610b20565b005b61038d6103723660046147a7565b6000908152600960205260409020546001600160a01b031690565b60405161034691906147cd565b61038d6103a83660046147a7565b6009602052600090815260409020546001600160a01b031681565b6103d66103d13660046147f0565b610b85565b60405163ffffffff9091168152602001610346565b6103626103f936600461478a565b610bc4565b61036261040c36600461482c565b610cd3565b61041a61138881565b60405161ffff9091168152602001610346565b61044061043b36600461478a565b610ce7565b604051908152602001610346565b61047161045c3660046147a7565b6000908152600f602052604090205460ff1690565b6040516103469190614872565b61049161048c3660046147a7565b610d9f565b6040516103469e9d9c9b9a999897969594939291906148d6565b6104be6104b93660046147a7565b610f4f565b6040516103469190614ab3565b6104406104d93660046147a7565b600c6020526000908152604090205481565b6103626104f9366004614ad1565b6111d1565b61036261050c3660046147a7565b61139e565b61036261051f36600461478a565b61142f565b610537610532366004614b6d565b6114c4565b6040516103469190614b88565b61033a61055236600461478a565b6001600160a01b031660009081526021602052604090205460ff1690565b61036261057e366004614b9b565b61155e565b60045461038d906001600160a01b031681565b61044060055481565b6103626115c9565b6104406301e1338081565b6103626115ed565b6103626105c8366004614c10565b611629565b6103626105db3660046147a7565b6116df565b61044062278d0081565b61033a6105f8366004614c81565b6117e3565b6103d661010081565b610362610614366004614cfe565b611b8b565b610362610627366004614d20565b611c83565b60015461038d906001600160a01b031681565b61036261064d3660046147a7565b611dde565b61038d611e1b565b60005461038d906001600160a01b031681565b60035461038d906001600160a01b031681565b610688611e36565b6040516103469190614d72565b6103626106a33660046147a7565b611e7f565b6106886106b63660046147a7565b611fed565b6106ce6106c93660046147a7565b61204a565b604051610346929190614d93565b6104406106ea366004614c10565b60009182526022602090815260408084206001600160a01b0393909316845291905290205490565b61038d6107203660046147a7565b6000908152601060205260409020546001600160a01b031690565b61033a610749366004614c81565b612074565b61044060245481565b610440610765366004614da9565b6122f3565b6108af604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081019190915250604080516101e0810182526018548152601954602080830191909152601a5492820192909252601b546060820152601c546080820152601d5460a0820152601e5460c0820152601f546001600160a01b03811660e083015261ffff600160a01b82048116610100840152600160b01b82048116610120840152600160c01b82048116610140840152600160d01b82048116610160840152600160e01b90910416610180820152905463ffffffff8082166101a0840152600160201b909104166101c082015290565b6040516103469190614de4565b6103626108ca366004614f00565b61263c565b61038d6108dd3660046147a7565b6000908152600a60205260409020546001600160a01b031690565b6104406109063660046147a7565b6126b4565b610362610919366004614f2e565b6126e8565b61036261092c36600461478a565b612802565b61036261093f366004614cfe565b612867565b61033a61095236600461478a565b60076020526000908152604090205460ff1681565b61044060065481565b61036261097e366004614c10565b612928565b6103626109913660046147a7565b6129e4565b6109b96109a43660046147a7565b6000908152600d602052604090205460ff1690565b6040516103469190614f6a565b6103626109d4366004614f78565b612a58565b61038d612b08565b6104406109ef366004614f94565b6001600160a01b03918216600090815260236020908152604080832093909416825291909152205490565b610362610a2836600461478a565b612b13565b610362610a3b366004614fc2565b612bad565b60025461038d906001600160a01b031681565b610362610a6136600461478a565b612d74565b610a79610a74366004614da9565b612de5565b604051610346929190614ffc565b610471610a953660046147a7565b613654565b610362610aa836600461478a565b613836565b61038d610abb3660046147a7565b600a602052600090815260409020546001600160a01b031681565b610362610ae436600461478a565b6138d0565b60006001600160e01b031982166329dd8cb960e11b1480610b1a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b28613961565b6001600160a01b038116610b3b57600080fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9557d04c1c0b16f93f13b69aed23b3b6ab935bff3c53ac81d17896d3583542ed90600090a250565b60126020528160005260406000208160028110610ba157600080fd5b60089182820401919006600402915091509054906101000a900463ffffffff1681565b610bcc613961565b6001600160a01b03811615801590610bf257506004546001600160a01b03828116911614155b8190610c1b5760405163eddf07f560e01b8152600401610c1291906147cd565b60405180910390fd5b50600480546001600160a01b0319166001600160a01b03831690811790915560009081526021602052604090205460ff16610c99576001600160a01b038116600081815260216020908152604091829020805460ff191660019081179091559151918252600080516020615ebe833981519152910160405180910390a25b7f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f381604051610cc891906147cd565b60405180910390a150565b610cdb613961565b610ce481613995565b50565b3360009081526023602090815260408083206001600160a01b038516845290915290205480610d29576040516312d37ee560e31b815260040160405180910390fd5b3360008181526023602090815260408083206001600160a01b0387168085529252822091909155610d5a9183613a45565b6040518181526001600160a01b0383169033907f6458407f0340d4c9ab27e2a8e4cc46dc2773a24dca8086eef793c12bb811a29a9060200160405180910390a3919050565b600860205260009081526040902080546001820154600283015460058401546006850154600786018054959660ff95861696949593946001600160a01b03841694600160a01b90940490931692909190610df890615015565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2490615015565b8015610e715780601f10610e4657610100808354040283529160200191610e71565b820191906000526020600020905b815481529060010190602001808311610e5457829003601f168201915b50505060088401546009850154600a860154600b870154600c8801805497986001600160a01b03958616989490951696509194509291610eb090615015565b80601f0160208091040260200160405190810160405280929190818152602001828054610edc90615015565b8015610f295780601f10610efe57610100808354040283529160200191610f29565b820191906000526020600020905b815481529060010190602001808311610f0c57829003601f168201915b505050600d90930154919250506001600160a01b0381169060ff600160a01b909104168e565b610f576145c1565b60008281526008602090815260409182902082516101e08101909352805483526001810154909183019060ff166003811115610f9557610f95614848565b6003811115610fa657610fa6614848565b8152600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610fcb5750505091835250506005820154602082015260068201546001600160a01b0381166040830152600160a01b900460ff16606082015260078201805460809092019161102890615015565b80601f016020809104026020016040519081016040528092919081815260200182805461105490615015565b80156110a15780601f10611076576101008083540402835291602001916110a1565b820191906000526020600020905b81548152906001019060200180831161108457829003601f168201915b505050918352505060088201546001600160a01b0390811660208301526009830154166040820152600a8201546060820152600b8201546080820152600c8201805460a0909201916110f290615015565b80601f016020809104026020016040519081016040528092919081815260200182805461111e90615015565b801561116b5780601f106111405761010080835404028352916020019161116b565b820191906000526020600020905b81548152906001019060200180831161114e57829003601f168201915b5050509183525050600d91909101546001600160a01b038082166020840152600160a01b90910460ff16151560409092019190915260a08201519192508391166111cb5760405163cd6f4a4f60e01b8152600401610c1291815260200190565b50919050565b60006111db613aa4565b805490915060ff600160401b82041615906001600160401b03166000811580156112025750825b90506000826001600160401b0316600114801561121e5750303b155b90508115801561122c575080155b1561124a5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561127357845460ff60401b1916600160401b1785555b6001600160a01b038c1661128657600080fd5b61128f33613acd565b611298876129e4565b6112a18b613836565b6112aa8a612b13565b6112b389610b20565b6112bc88610bc4565b6112c586613995565b73__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__63764346ff6040518163ffffffff1660e01b815260040160006040518083038186803b15801561130957600080fd5b505af415801561131d573d6000803e3d6000fd5b50505050611329611e1b565b6001600160a01b03168c6001600160a01b03161461134a5761134a8c613ade565b831561139057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6113a6613961565b60008181526009602052604090205481906001600160a01b03166113e0576040516381c4951960e01b8152600401610c1291815260200190565b506000818152600960205260409081902080546001600160a01b0319169055517f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc90610cc89083815260200190565b611437613961565b6001600160a01b038116600090815260076020526040902054819060ff16611473576040516321ac7c5f60e01b8152600401610c1291906147cd565b506001600160a01b03811660009081526007602052604090819020805460ff19169055517f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e790610cc89083906147cd565b600b60205260009081526040902080546114dd90615015565b80601f016020809104026020016040519081016040528092919081815260200182805461150990615015565b80156115565780601f1061152b57610100808354040283529160200191611556565b820191906000526020600020905b81548152906001019060200180831161153957829003601f168201915b505050505081565b806000805b828110156115a15761158d85858381811061158057611580615049565b9050602002013533613b05565b6115979083615075565b9150600101611563565b50600081116115c3576040516312d37ee560e31b815260040160405180910390fd5b50505050565b6115d1613961565b6040516001623f026d60e01b0319815260040160405180910390fd5b33806115f7612b08565b6001600160a01b031614611620578060405163118cdaa760e01b8152600401610c1291906147cd565b610ce481613ade565b611631613961565b6001600160a01b0381161580159061166357506000828152600a60205260409020546001600160a01b03828116911614155b8290611685576040516381c4951960e01b8152600401610c1291815260200190565b506000828152600a602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f53661e3e12f23eea1e322a5352171ad3e4407d1394f869f53bb148c27e00908a9190a35050565b6000546001600160a01b0316331461170a5760405163b56831db60e01b815260040160405180910390fd5b6000818152600d602052604090205460ff16600181600681111561173057611730614848565b1461175557816001826040516337e1404160e01b8152600401610c1293929190615088565b6000828152600d60205260409020805460ff1916600217905560155461177b9042615075565b6000838152600e602052604080822092909255905183917fc44405af9078047712501f519e1fb900c2896c62b488336f84529c72ae16e6f191a281600080516020615e9e833981519152600160026040516117d79291906150a9565b60405180910390a25050565b6000806117ef87610f4f565b6000888152600d602052604090205490915060ff16600481600681111561181857611818614848565b1488600483909192611840576040516337e1404160e01b8152600401610c1293929190615088565b5050506000888152600e6020908152604091829020825160608101845281548152600182015492810192909252600201549181018290529089904281101561189d576040516308f3034360e31b8152600401610c129291906150c4565b50506000898152600860205260409020600c016118bb888a8361514b565b506000898152600d60205260409020805460ff191660051790556101c083015115611b0957846118fe57604051631eae1a4d60e31b815260040160405180910390fd5b600080546040516304cd0b0d60e11b8152600481018c90526001600160a01b039091169063099a161a90602401602060405180830381865afa158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190615204565b610100850151600054604051630651434d60e51b8152600481018e90529293506001600160a01b039182169263c342d8ae928e92169063ca2869a090602401602060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ec9190615204565b60008054906101000a90046001600160a01b03166001600160a01b031663a01649308f6040518263ffffffff1660e01b8152600401611a2d91815260200190565b600060405180830381865afa158015611a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7291908101906152e6565b8861016001518961014001518f8f604051611a8e92919061531a565b6040518091039020888f8f6040518a63ffffffff1660e01b8152600401611abd99989796959493929190615398565b602060405180830381865afa158015611ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afe91906153f4565b506001945050611b0e565b600193505b611b1789613bcc565b887f3a140076c461ebc41d74833ae0ee8bbc8079a135a63392098cd381e84350b69b89898989604051611b4d9493929190615411565b60405180910390a288600080516020615e9e83398151915260046005604051611b779291906150a9565b60405180910390a250505095945050505050565b6000546001600160a01b03163314611bb65760405163b56831db60e01b815260040160405180910390fd5b6000828152600860209081526040808320600d9092529091205460ff166002816006811115611be757611be7614848565b14611c0c57836002826040516337e1404160e01b8152600401610c1293929190615088565b6000848152600d6020526040808220805460ff19166003179055600a84018590555185917f11df18edb9bc9cd90a79068e0e208b630202148643d797d6150e7bacb733e63c91a283600080516020615e9e83398151915260026003604051611c759291906150a9565b60405180910390a250505050565b611c8b613961565b80611c9557600080fd5b60ff83166000908152600b602052604081208054611cb290615015565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90615015565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505060ff86166000908152600b60205260409020919250611d51905083858361514b565b508051600003611d9b577f6e4a4ea7f38fc775e616080b155744337e6216848e886a69c918b4ab84da2195848484604051611d8e93929190615443565b60405180910390a16115c3565b7f6eec8996f69c99beec779c1669adc196781eac49caf298b71ae09c7ebc6467ce84828585604051611dd09493929190615469565b60405180910390a150505050565b611de6613961565b60248190556040518181527f626be19f07270f3ff739849263a0cfde670d32d05f3ce9419313c38e014ed24190602001610cc8565b600080611e26613fd5565b546001600160a01b031692915050565b611e5a60405180606001604052806000815260200160008152602001600081525090565b5060408051606081018252601554815260165460208201526017549181019190915290565b6000818152600d602052604090205460ff166006816006811115611ea557611ea5614848565b148290611ec857604051637cb2d48360e11b8152600401610c1291815260200190565b506000828152600c60205260409020548281611efa576040516345ba89d560e11b8152600401610c1291815260200190565b506000838152600c60205260408120819055611f1584613ff9565b6000858152601160205260409020546002549192506001600160a01b0390811691611f439183911685613a45565b60025460405163da19b69760e01b81526001600160a01b039091169063da19b69790611f79908890879087908790600401615498565b600060405180830381600087803b158015611f9357600080fd5b505af1158015611fa7573d6000803e3d6000fd5b50505050847f5297818f48a66292b8b3e2caab83eec531b669bb20807fd38cf006adb2a07317848451604051611fde9291906150c4565b60405180910390a25050505050565b61201160405180606001604052806000815260200160008152602001600081525090565b506000908152600e6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b6000818152600d6020526040812054819060ff1661206884826140ec565b50909590945092505050565b60008061208087610f4f565b6000888152600d6020908152604080832054600e835292819020815160608101835281548152600182015493810193909352600201549082015291925060ff169073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__631a2dd41d8a8460068111156120ee576120ee614848565b60208501516060880151600160200201516101608901516040516001600160e01b031960e088901b168152600481019590955260ff90931660248501526044840191909152606483015260848201524260a482015260c40160006040518083038186803b15801561215e57600080fd5b505af4158015612172573d6000803e3d6000fd5b505050506000888860405161218892919061531a565b604080519182900390912060008c815260086020908152838220600b01839055600d905291909120805460ff191660041790556017549091506121cb9042615075565b60008b8152600e6020526040908190206002019190915560a08501519051632f0e1bbf60e01b81526001600160a01b0390911690632f0e1bbf90612219908d9085908c908c906004016154d0565b6020604051808303816000875af1158015612238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225c91906153f4565b945088888661228057604051632f9f8ab960e01b8152600401610c129291906154fa565b5050897f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade0718a8a6040516122b49291906154fa565b60405180910390a289600080516020615e9e833981519152600360046040516122de9291906150a9565b60405180910390a25050505095945050505050565b600080600b8161230960a0860160808701614b6d565b60ff1660ff168152602001908152602001600020805461232890615015565b90501161233457600080fd5b6000601281612346602086018661550e565b600381111561235757612357614848565b600381111561236857612368614848565b815260208101919091526040908101600020815180830190925260028282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116123915790505050604080516101e0810182526018548152601954602080830191909152601a5492820192909252601b546060820152601c546080820152601d5460a0820152601e5460c0820152601f546001600160a01b03811660e083015261ffff600160a01b82048116610100840152600160b01b82048116610120840152600160c01b82048116610140840152600160d01b82048116610160840152600160e01b90910416610180820152815463ffffffff8082166101a0840152600160201b909104166101c082015294955073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9350634ff2c9f592508591506124c49088018861550e565b60038111156124d5576124d5614848565b846101a00151856101c001516040518563ffffffff1660e01b81526004016125009493929190615552565b60006040518083038186803b15801561251857600080fd5b505af415801561252c573d6000803e3d6000fd5b5050505073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__634ae7776b6018601560008054906101000a90046001600160a01b03166001600160a01b0316639f0f874a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c39190615204565b604080516001600160e01b031960e087901b1681526125f394939291899160208d0135918d013590600401615585565b602060405180830381865af4158015612610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126349190615204565b949350505050565b612644613961565b816001600160a01b03811661266d5760405163eddf07f560e01b8152600401610c1291906147cd565b506001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091559151918252600080516020615ebe83398151915291016117d7565b60006126c08233613b05565b9050600081116126e3576040516312d37ee560e31b815260040160405180910390fd5b919050565b6000546001600160a01b031633148061270b57506003546001600160a01b031633145b61272857604051639e75a8b560e01b815260040160405180910390fd5b60008160ff1611801561273f5750600d60ff821611155b61274857600080fd5b6000828152600d602052604090205460ff1673__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__637e262a6f8483600681111561278757612787614848565b6040516001600160e01b031960e085901b168152600481019290925260ff16602482015260440160006040518083038186803b1580156127c657600080fd5b505af41580156127da573d6000803e3d6000fd5b505050506127fd83828460ff16600d8111156127f8576127f8614848565b614120565b505050565b61280a613961565b6001600160a01b03811661281d57600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f4ccc8ed483c7c44c3602c3c38afc2c014a8f1d2dc210dfe58ebeeeead230f8e090600090a250565b6003546001600160a01b03163314612892576040516357d6948d60e11b815260040160405180910390fd5b60025460405163c1ab0f1f60e01b81526001600160a01b039091169063c1ab0f1f906128c490859085906004016150c4565b600060405180830381600087803b1580156128de57600080fd5b505af11580156128f2573d6000803e3d6000fd5b50505050817f4f41a3b0a032ebcae925f2ace77d507435840ca4b2dbaffdd7723fa8d72ee542826040516117d791815260200190565b612930613961565b6001600160a01b0381161580159061296257506000828152600960205260409020546001600160a01b03828116911614155b8290612984576040516381c4951960e01b8152600401610c1291815260200190565b5060008281526009602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381527ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb69910160405180910390a15050565b6129ec613961565b600081118015612a0057506301e133808111155b8190612a22576040516313b783af60e21b8152600401610c1291815260200190565b5060058190556040518181527fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b52355290602001610cc8565b612a60613961565b60405163de5fa95560e01b815273__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9063de5fa95590612a979084906004016157dc565b60006040518083038186803b158015612aaf57600080fd5b505af4158015612ac3573d6000803e3d6000fd5b505050508060188181612ad69190615812565b9050507fbf3951313e980027eb48ce363fdb707286195ec6a0f802ac153927cf929c3fc681604051610cc891906157dc565b600080611e266141cb565b612b1b613961565b6001600160a01b03811615801590612b4157506001546001600160a01b03828116911614155b8190612b61576040516320252f0b60e01b8152600401610c1291906147cd565b50600180546001600160a01b0319166001600160a01b0383161790556040517fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a790610cc89083906147cd565b612bb5613961565b604080516101e0810182526018548152601954602080830191909152601a5482840152601b546060830152601c546080830152601d5460a0830152601e5460c0830152601f546001600160a01b03811660e084015261ffff600160a01b82048116610100850152600160b01b82048116610120850152600160c01b82048116610140850152600160d01b82048116610160850152600160e01b909104166101808301525463ffffffff8082166101a08401819052600160201b909204166101c08301819052925163588370a960e11b8152919273__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9263b106e15292612cb29287926004016159d2565b60006040518083038186803b158015612cca57600080fd5b505af4158015612cde573d6000803e3d6000fd5b505050508160126000856003811115612cf957612cf9614848565b6003811115612d0a57612d0a614848565b81526020810191909152604001600020612d25916002614641565b50826003811115612d3857612d38614848565b7f8b56fae526eee054f0849759a99fc7d4ff3823824ebf097a56f7d78adb6b34fa83604051612d679190615a2d565b60405180910390a2505050565b612d7c613961565b6000612d866141cb565b80546001600160a01b0319166001600160a01b0384169081178255909150612dac611e1b565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6000612def6145c1565b6004546001600160a01b031660008181526021602052604090205460ff16612e2b576040516335b99e4360e11b8152600401610c1291906147cd565b506000601281612e3e602087018761550e565b6003811115612e4f57612e4f614848565b6003811115612e6057612e60614848565b815260208101919091526040908101600020815180830190925260028282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411612e895790505050505050905060076000856060016020810190612ee3919061478a565b6001600160a01b0316815260208101919091526040016000205460ff16612f10608086016060870161478a565b90612f2f5760405163295a6a6f60e11b8152600401610c1291906147cd565b506000612f3b856122f3565b601654601754600554604051637cad360760e01b815293945073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__93637cad360793612f859360208c019342938990600401615a6e565b60006040518083038186803b158015612f9d57600080fd5b505af4158015612fb1573d6000803e3d6000fd5b505060068054965086925090506000612fc983615a9f565b919050555060004485604051602001612fe39291906150c4565b60408051808303601f1901815291815281516020928301206000888152600c84528281208690556004546011855283822080546001600160a01b039283166001600160a01b031991821617909155601f8054601388528685208054600160b01b90920461ffff1661ffff19909216919091179055546014875285842080549190931690821617909155600d8552838220805460ff191660011790556010909452829020805490931633179092556016549192506130a39190880135615075565b6000868152600e60209081526040909120600101919091558185526130ca9087018761550e565b846020019060038111156130e0576130e0614848565b908160038111156130f3576130f3614848565b90525042604080860191909152805180820182529060208801906002908390839080828437600092019190915250505060608086019190915261313c906080880190880161478a565b6001600160a01b031660a08086019190915261315d90870160808801614b6d565b60ff1660c08086019190915261317590870187615ab8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060e0808601919091526131c3906101008801908801615afe565b15156101c0850152336101a08501526000600b816131e760a08a0160808b01614b6d565b60ff1660ff168152602001908152602001600020805461320690615015565b80601f016020809104026020016040519081016040528092919081815260200182805461323290615015565b801561327f5780601f106132545761010080835404028352916020019161327f565b820191906000526020600020905b81548152906001019060200180831161326257829003601f168201915b50505050509050600087606001602081019061329b919061478a565b6001600160a01b031663fefd9a8b8885856132b960a08e018e615ab8565b8e8060c001906132c99190615ab8565b6040518863ffffffff1660e01b81526004016132eb9796959493929190615b1b565b6020604051808303816000875af115801561330a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332e9190615204565b6000818152600960205260409020549091506001600160a01b0316818161336b576040516381c4951960e01b8152600401610c1291815260200190565b506000828152600a60205260409020546001600160a01b031682816133a6576040516381c4951960e01b8152600401610c1291815260200190565b50608088018390526001600160a01b038083166101008a0152811661012089015260008981526008602090815260409091208951815590890151600180830180548c94939260ff19919091169083600381111561340557613405614848565b02179055506040820151816002015560608201518160030190600261342b9291906146e3565b506080820151600582015560a082015160068201805460c085015160ff16600160a01b026001600160a81b03199091166001600160a01b039093169290921791909117905560e082015160078201906134849082615b70565b506101008201516008820180546001600160a01b039283166001600160a01b031991821617909155610120840151600984018054919093169116179055610140820151600a820155610160820151600b820155610180820151600c8201906134ec9082615b70565b506101a0820151600d90910180546101c0909301511515600160a01b026001600160a81b03199093166001600160a01b03928316179290921790915560045461353891163330896141ef565b60005460405163291a691b60e01b81526001600160a01b039091169063291a691b9061356c908c9089908c90600401615c28565b6020604051808303816000875af115801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af91906153f4565b6135cc57604051630d8dbe2560e01b815260040160405180910390fd5b6135dc60808b0160608c0161478a565b6001600160a01b03167f5090c9764b5cd13df7afc0013f733dfbe6eaf1b6ddc22a5e291fa387efd4c15e8a8a604051613616929190614ffc565b60405180910390a288600080516020615e9e833981519152600060016040516136409291906150a9565b60405180910390a250505050505050915091565b6000818152600d602052604081205460ff1673__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__637e262a6f8483600681111561369357613693614848565b6040516001600160e01b031960e085901b168152600481019290925260ff16602482015260440160006040518083038186803b1580156136d257600080fd5b505af41580156136e6573d6000803e3d6000fd5b505050506000806136f785846140ec565b90955090925090508161372057604051639f65d93560e01b815260048101869052602401610c12565b60245480156138225760006137358284615075565b9050804210801561375d57506000878152601060205260409020546001600160a01b03163314155b8015613782575061376c611e1b565b6001600160a01b0316336001600160a01b031614155b80156137fe575060005460405163a8a4d69b60e01b8152600481018990523360248201526001600160a01b039091169063a8a4d69b90604401602060405180830381865afa1580156137d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137fc91906153f4565b155b156138205786816040516324d4b88f60e21b8152600401610c129291906150c4565b505b61382d868587614120565b50505050919050565b61383e613961565b6001600160a01b0381161580159061386457506000546001600160a01b03828116911614155b8190613884576040516375ac4eb760e11b8152600401610c1291906147cd565b50600080546001600160a01b0319166001600160a01b0383161790556040517f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b690610cc89083906147cd565b6001600160a01b038116600090815260076020526040902054819060ff161561390d5760405163b29d459560e01b8152600401610c1291906147cd565b506001600160a01b03811660009081526007602052604090819020805460ff19166001179055517fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d46790610cc89083906147cd565b3361396a611e1b565b6001600160a01b031614613993573360405163118cdaa760e01b8152600401610c1291906147cd565b565b6040516336523a5f60e01b815273__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__906336523a5f906139d190849062278d0090600401615c87565b60006040518083038186803b1580156139e957600080fd5b505af41580156139fd573d6000803e3d6000fd5b5050508135601555506020810135601655604080820135601755517f7e86ba16b805e2835af5c5b7aa5a942ced8bcc1fb95a05fbe42dae3862350a1690610cc8908390615ca2565b6040516001600160a01b038381166024830152604482018390526127fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614228565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b1a565b613ad5614290565b610ce4816142b5565b6000613ae86141cb565b80546001600160a01b03191681559050613b01826142e7565b5050565b60008281526022602090815260408083206001600160a01b038516845290915281205490819003613b3857506000610b1a565b60008381526022602090815260408083206001600160a01b03808716855290835281842084905586845260119092529091205416613b77818484613a45565b806001600160a01b0316836001600160a01b0316857fd7566a1f449b7ee89a6af29f319e117c231ea862057eb65395ca2bf70283b1c885604051613bbd91815260200190565b60405180910390a45092915050565b6000805460405162beb08960e51b8152600481018490526001600160a01b03909116906317d6112090602401600060405180830381865afa158015613c15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c3d9190810190615d0e565b5080516000848152600c60209081526040808320805490849055601190925282205493945091926001600160a01b031690829003613ce2576002546040516341489f1560e01b81526001600160a01b03909116906341489f1590613ca990889088908690600401615d77565b600060405180830381600087803b158015613cc357600080fd5b505af1158015613cd7573d6000803e3d6000fd5b505050505050505050565b82600003613d8a576000858152601060205260409020546001600160a01b03168015613d1c57613d1c6001600160a01b0383168285613a45565b6002546040516341489f1560e01b81526001600160a01b03909116906341489f1590613d5090899089908790600401615d77565b600060405180830381600087803b158015613d6a57600080fd5b505af1158015613d7e573d6000803e3d6000fd5b50505050505050505050565b600085815260136020908152604080832054601490925282205461ffff909116906001600160a01b03168115801590613dcb57506001600160a01b03811615155b15613e8057612710613de161ffff841687615da8565b613deb9190615dbf565b92508215613e80576001600160a01b03808216600090815260236020908152604080832093881683529290529081208054859290613e2a908490615075565b92505081905550836001600160a01b0316816001600160a01b0316897f62d886e26db625296d628b1cf7f47f83051f9d83e216a8ad38041673a2058f9a86604051613e7791815260200190565b60405180910390a45b6000613e8c8487615de1565b60405160016233c60b60e11b031981526004810182905260248101899052604481018b905290915060009073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9063ff9873ea90606401600060405180830381865af4158015613ef3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f1b9190810190615df4565b9050613f298a8a8389614343565b897fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a8a83604051613f5b929190615e28565b60405180910390a26002546040516341489f1560e01b81526001600160a01b03909116906341489f1590613f97908d908d908b90600401615d77565b600060405180830381600087803b158015613fb157600080fd5b505af1158015613fc5573d6000803e3d6000fd5b5050505050505050505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b6000818152600f602052604090205460609060ff16600181600d81111561402257614022614848565b148061403f5750600281600d81111561403d5761403d614848565b145b156140785760005b604051908082528060200260200182016040528015614070578160200160208202803683370190505b509392505050565b60005460405162beb08960e51b8152600481018590526001600160a01b03909116906317d6112090602401600060405180830381865afa9250505080156140e157506040513d6000823e601f3d908101601f191682016040526140de9190810190615d0e565b60015b614070576000614047565b60008060006140fb8585614458565b92509050801580159061410d57508042115b92508261411957600091505b9250925092565b6000838152600d6020526040902080546006919060ff191660018302179055506000838152600f60205260409020805482919060ff1916600183600d81111561416b5761416b614848565b021790555082600080516020615e9e8339815191528360066040516141919291906150a9565b60405180910390a2827fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb8383604051612d67929190615e82565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0090565b6040516001600160a01b0384811660248301528381166044830152606482018390526115c39186918216906323b872dd90608401613a72565b600080602060008451602086016000885af18061424b576040513d6000823e3d81fd5b50506000513d91508115614263578060011415614270565b6001600160a01b0384163b155b156115c35783604051635274afe760e01b8152600401610c1291906147cd565b6142986145a7565b61399357604051631afcd79f60e31b815260040160405180910390fd5b6142bd614290565b6001600160a01b038116611620576000604051631e4fbdf760e01b8152600401610c1291906147cd565b60006142f1613fd5565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b825160005b8181101561445057600084828151811061436457614364615049565b602002602001015190508060000361437c5750614448565b600087815260226020526040812087518392908990869081106143a1576143a1615049565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546143d89190615075565b92505081905550836001600160a01b03168683815181106143fb576143fb615049565b60200260200101516001600160a01b0316887fdf636f3c38711e6702b8ef7055cc13b79e969206c537757c1fee37dbbc71df748460405161443e91815260200190565b60405180910390a4505b600101614348565b505050505050565b600080600183600681111561446f5761446f614848565b036144ec57600054604051632800d82960e01b8152600481018690526001600160a01b0390911690632800d82990602401602060405180830381865afa1580156144bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e19190615204565b6001915091506145a0565b6000848152600e6020908152604091829020825160608101845281548152600182015492810192909252600290810154928201929092529084600681111561453657614536614848565b0361454757519150600390506145a0565b600384600681111561455b5761455b614848565b0361456f57602001519150600690506145a0565b600484600681111561458357614583614848565b0361459757604001519150600a90506145a0565b60008092509250505b9250929050565b60006145b1613aa4565b54600160401b900460ff16919050565b604080516101e08101909152600080825260208201908152602001600081526020016145eb614711565b81526000602082018190526040820181905260608083018290526080830181905260a0830182905260c0830182905260e08301829052610100830182905261012083015261014082018190526101609091015290565b6001830191839082156146d35791602002820160005b838211156146a157833563ffffffff1683826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614657565b80156146d15782816101000a81549063ffffffff02191690556004016020816003010492830192600103026146a1565b505b506146df92915061472f565b5090565b82600281019282156146d3579160200282015b828111156146d35782518255916020019190600101906146f6565b60405180604001604052806002906020820280368337509192915050565b5b808211156146df5760008155600101614730565b60006020828403121561475657600080fd5b81356001600160e01b03198116811461476e57600080fd5b9392505050565b6001600160a01b0381168114610ce457600080fd5b60006020828403121561479c57600080fd5b813561476e81614775565b6000602082840312156147b957600080fd5b5035919050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b8035600481106126e357600080fd5b6000806040838503121561480357600080fd5b61480c836147e1565b946020939093013593505050565b6000606082840312156111cb57600080fd5b60006060828403121561483e57600080fd5b61476e838361481a565b634e487b7160e01b600052602160045260246000fd5b600e811061486e5761486e614848565b9052565b60208101610b1a828461485e565b6004811061486e5761486e614848565b6000815180845260005b818110156148b65760208185018101518683018201520161489a565b506000602082860101526020601f19601f83011685010191505092915050565b8e81526148e6602082018f614880565b8c60408201528b60608201526148ff608082018c6147c0565b60ff8a1660a08201526101c060c082015260006149206101c083018b614890565b61492d60e084018b6147c0565b61493b61010084018a6147c0565b876101208401528661014084015282810361016084015261495c8187614890565b91505061496d6101808301856147c0565b8215156101a08301529f9e505050505050505050505050505050565b8060005b60028110156115c357815184526020938401939091019060010161498d565b80518252600060208201516149c46020850182614880565b506040820151604084015260608201516149e16060850182614989565b50608082015160a084015260a08201516149fe60c08501826147c0565b5060c082015160ff811660e08501525060e0820151610200610100850152614a2a610200850182614890565b9050610100830151614a406101208601826147c0565b50610120830151614a556101408601826147c0565b506101408301516101608501526101608301516101808501526101808301518482036101a0860152614a878282614890565b9150506101a0830151614a9e6101c08601826147c0565b506101c08301518015156101e0860152614070565b60208152600061476e60208301846149ac565b80356126e381614775565b6000806000806000806000610120888a031215614aed57600080fd5b8735614af881614775565b96506020880135614b0881614775565b95506040880135614b1881614775565b94506060880135614b2881614775565b93506080880135614b3881614775565b925060a08801359150614b4e8960c08a0161481a565b905092959891949750929550565b803560ff811681146126e357600080fd5b600060208284031215614b7f57600080fd5b61476e82614b5c565b60208152600061476e6020830184614890565b60008060208385031215614bae57600080fd5b82356001600160401b03811115614bc457600080fd5b8301601f81018513614bd557600080fd5b80356001600160401b03811115614beb57600080fd5b8560208260051b8401011115614c0057600080fd5b6020919091019590945092505050565b60008060408385031215614c2357600080fd5b823591506020830135614c3581614775565b809150509250929050565b60008083601f840112614c5257600080fd5b5081356001600160401b03811115614c6957600080fd5b6020830191508360208285010111156145a057600080fd5b600080600080600060608688031215614c9957600080fd5b8535945060208601356001600160401b03811115614cb657600080fd5b614cc288828901614c40565b90955093505060408601356001600160401b03811115614ce157600080fd5b614ced88828901614c40565b969995985093965092949392505050565b60008060408385031215614d1157600080fd5b50508035926020909101359150565b600080600060408486031215614d3557600080fd5b614d3e84614b5c565b925060208401356001600160401b03811115614d5957600080fd5b614d6586828701614c40565b9497909650939450505050565b81518152602080830151908201526040808301519082015260608101610b1a565b82151581526040810161476e602083018461485e565b600060208284031215614dbb57600080fd5b81356001600160401b03811115614dd157600080fd5b8201610100818503121561476e57600080fd5b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151614e3f60e08401826147c0565b50610100830151614e5761010084018261ffff169052565b50610120830151614e6f61012084018261ffff169052565b50610140830151614e8761014084018261ffff169052565b50610160830151614e9f61016084018261ffff169052565b50610180830151614eb761018084018261ffff169052565b506101a0830151614ed16101a084018263ffffffff169052565b506101c0830151614eeb6101c084018263ffffffff169052565b5092915050565b8015158114610ce457600080fd5b60008060408385031215614f1357600080fd5b8235614f1e81614775565b91506020830135614c3581614ef2565b60008060408385031215614f4157600080fd5b82359150614f5160208401614b5c565b90509250929050565b6007811061486e5761486e614848565b60208101610b1a8284614f5a565b60006101e0828403128015614f8c57600080fd5b509092915050565b60008060408385031215614fa757600080fd5b8235614fb281614775565b91506020830135614c3581614775565b60008060608385031215614fd557600080fd5b614fde836147e1565b915083606084011115614ff057600080fd5b50926020919091019150565b82815260406020820152600061263460408301846149ac565b600181811c9082168061502957607f821691505b6020821081036111cb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b1a57610b1a61505f565b8381526060810161509c6020830185614f5a565b6126346040830184614f5a565b604081016150b78285614f5a565b61476e6020830184614f5a565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b601f8211156127fd57806000526020600020601f840160051c8101602085101561510f5750805b601f840160051c820191505b8181101561512f576000815560010161511b565b5050505050565b600019600383901b1c191660019190911b1790565b6001600160401b03831115615162576151626150d2565b615176836151708354615015565b836150e8565b6000601f8411600181146151a457600085156151925750838201355b61519c8682615136565b84555061512f565b600083815260209020601f19861690835b828110156151d557868501358255602094850194600190920191016151b5565b50868210156151f25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561521657600080fd5b5051919050565b604051601f8201601f191681016001600160401b0381118282101715615245576152456150d2565b604052919050565b60006001600160401b03821115615266576152666150d2565b5060051b60200190565b600082601f83011261528157600080fd5b815161529461528f8261524d565b61521d565b8082825260208201915060208360051b8601019250858311156152b657600080fd5b602085015b838110156152dc5780516152ce81614775565b8352602092830192016152bb565b5095945050505050565b6000602082840312156152f857600080fd5b81516001600160401b0381111561530e57600080fd5b61263484828501615270565b8183823760009101908152919050565b600081518084526020840193506020830160005b828110156153655781516001600160a01b031686526020958601959091019060010161533e565b5093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b898152886020820152610100604082015260006153b961010083018a61532a565b8860608401528760808401528660a08401528560c084015282810360e08401526153e481858761536f565b9c9b505050505050505050505050565b60006020828403121561540657600080fd5b815161476e81614ef2565b60408152600061542560408301868861536f565b828103602084015261543881858761536f565b979650505050505050565b60ff8416815260406020820152600061546060408301848661536f565b95945050505050565b60ff851681526060602082015260006154856060830186614890565b828103604084015261543881858761536f565b8481528360208201526080604082015260006154b7608083018561532a565b905060018060a01b038316606083015295945050505050565b8481528360208201526060604082015260006154f060608301848661536f565b9695505050505050565b60208152600061263460208301848661536f565b60006020828403121561552057600080fd5b61476e826147e1565b8060005b60028110156115c357815163ffffffff1684526020938401939091019060010161552d565b60a081016155608287615529565b60ff94909416604082015263ffffffff92831660608201529116608090910152919050565b8654815260018701546020820152600287015460408201526003870154606082015260048701546080820152600587015460a0820152600687015460c082015260078701546102e08201906155e660e084016001600160a01b0383166147c0565b60a081901c61ffff1661010084015260b081901c61ffff1661012084015260c081901c61ffff1661014084015260d081901c61ffff1661016084015260e081901c61ffff1661018084015250600888015463ffffffff81166101a0840152602081901c63ffffffff166101c08401525086546101e08301526001870154610200830152600287015461022083015285610240830152615689610260830186615529565b6102a08201939093526102c00152949350505050565b61ffff81168114610ce457600080fd5b80356126e38161569f565b63ffffffff81168114610ce457600080fd5b80356126e3816156ba565b803582526020808201359083015260408082013590830152606080820135908301526080808201359083015260a0808201359083015260c0808201359083015261572360e08201614ac6565b61573060e08401826147c0565b5061573e61010082016156af565b61ffff1661010083015261575561012082016156af565b61ffff1661012083015261576c61014082016156af565b61ffff1661014083015261578361016082016156af565b61ffff1661016083015261579a61018082016156af565b61ffff166101808301526157b16101a082016156cc565b63ffffffff166101a08301526157ca6101c082016156cc565b63ffffffff81166101c0840152505050565b6101e08101610b1a82846156d7565b60008135610b1a81614775565b60008135610b1a8161569f565b60008135610b1a816156ba565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a0820135600582015560c082013560068201556007810161588261586560e085016157eb565b82546001600160a01b0319166001600160a01b0391909116178255565b6158b261589261010085016157f8565b82805461ffff60a01b191660a09290921b61ffff60a01b16919091179055565b6158e26158c261012085016157f8565b82805461ffff60b01b191660b09290921b61ffff60b01b16919091179055565b6159126158f261014085016157f8565b82805461ffff60c01b191660c09290921b61ffff60c01b16919091179055565b61594261592261016085016157f8565b82805461ffff60d01b191660d09290921b61ffff60d01b16919091179055565b61597261595261018085016157f8565b82805461ffff60e01b191660e09290921b61ffff60e01b16919091179055565b506008810161599e6159876101a08501615805565b825463ffffffff191663ffffffff91909116178255565b6127fd6159ae6101c08501615805565b82805463ffffffff60201b191660209290921b63ffffffff60201b16919091179055565b60808101818560005b6002811015615a0a5781356159ef816156ba565b63ffffffff16835260209283019291909101906001016159db565b50505063ffffffff8416604083015263ffffffff83166060830152949350505050565b60408101818360005b6002811015615a65578135615a4a816156ba565b63ffffffff1683526020928301929190910190600101615a36565b50505092915050565b60e08101604088833760408201969096526060810194909452608084019290925260a083015260c090910152919050565b600060018201615ab157615ab161505f565b5060010190565b6000808335601e19843603018112615acf57600080fd5b8301803591506001600160401b03821115615ae957600080fd5b6020019150368190038213156145a057600080fd5b600060208284031215615b1057600080fd5b813561476e81614ef2565b87815286602082015260a060408201526000615b3a60a0830188614890565b8281036060840152615b4d81878961536f565b90508281036080840152615b6281858761536f565b9a9950505050505050505050565b81516001600160401b03811115615b8957615b896150d2565b615b9d81615b978454615015565b846150e8565b6020601f821160018114615bcb5760008315615bb95750848201515b615bc38482615136565b85555061512f565b600084815260208120601f198516915b82811015615bfb5787850151825560209485019460019092019101615bdb565b5084821015615c195786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8381526020810183905260808101604082018360005b6002811015615c6357815163ffffffff16835260209283019290910190600101615c3e565b505050949350505050565b8035825260208082013590830152604090810135910152565b60808101615c958285615c6e565b8260608301529392505050565b60608101610b1a8284615c6e565b600082601f830112615cc157600080fd5b8151615ccf61528f8261524d565b8082825260208201915060208360051b860101925085831115615cf157600080fd5b602085015b838110156152dc578051835260209283019201615cf6565b60008060408385031215615d2157600080fd5b82516001600160401b03811115615d3757600080fd5b615d4385828601615270565b602085015190935090506001600160401b03811115615d6157600080fd5b615d6d85828601615cb0565b9150509250929050565b838152606060208201526000615d90606083018561532a565b905060018060a01b0383166040830152949350505050565b8082028115828204841417610b1a57610b1a61505f565b600082615ddc57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b1a57610b1a61505f565b600060208284031215615e0657600080fd5b81516001600160401b03811115615e1c57600080fd5b61263484828501615cb0565b604081526000615e3b604083018561532a565b828103602084015280845180835260208301915060208601925060005b81811015615e76578351835260209384019390920191600101615e58565b50909695505050505050565b60408101615e908285614f5a565b61476e602083018461485e56fe1b418a230a21d37a078bf8f16decbde8ccceacd77159371f62f0d4ea00d19967be98ad384b5e8da1954c30278ba3c2c981c7eafb2c01126a9d4b275f88fad77da164736f6c634300081c000a"; readonly deployedBytecode: "0x608060405234801561001057600080fd5b50600436106103225760003560e01c806301ffc9a71461032757806302a3a9c91461034f5780630ef81b2f1461036457806310bc62811461039a57806311bd61d9146103c357806315cce224146103eb5780631ba72945146103fe5780632712225914610411578063351c2edd1461042d57806336c5d38a1461044e5780634017daf01461047e5780634044de3214610411578063406ed35c146104ab5780634147a360146104cb5780634d600e5d146104eb5780634e92ec63146104fe5780634fc77264146105115780635d168418146105245780635d204718146105445780635eac623914610570578063647846a5146105835780636db5c8fd14610596578063715018a61461059f578063779a0606146105a757806379ba5097146105b25780637c8c3b4d146105ba5780637cfa9d74146105cd5780637deccb97146105e05780637edcd7ab146105ea5780637f10792d146105fd57806381476ec214610606578063830d718114610619578063858142431461062c57806386d63bee1461063f5780638da5cb5b146106525780638dcdd86b1461065a5780638e5ce3ad1461066d57806390173a41146106805780639117173c1461069557806392312386146106a8578063929a8faf146106bb57806398969e82146106dc57806399c6679d146107125780639c8570c81461073b5780639d0e5af61461074e5780639e57b93414610757578063a87f4ab91461076a578063a8990a2f146108bc578063ac3d2f42146108cf578063ae169a50146108f8578063bb2d1b821461090b578063bff232c11461091e578063c1ab0f1f14610931578063c4ccafa214610944578063cb64961714610967578063cbd1687214610970578063cf0f34c414610983578063cfbdc98d14610996578063d8afed3e146109c6578063e30c3978146109d9578063e53c1a93146109e1578063e59e469514610a1a578063ea71aa5714610a2d578063f0691cba14610a40578063f2fde38b14610a53578063f3ceba3a14610a66578063f81b8ef614610a87578063fad8e11114610a9a578063fbdb323714610aad578063fd2f3d0114610ad6575b600080fd5b61033a610335366004614744565b610ae9565b60405190151581526020015b60405180910390f35b61036261035d36600461478a565b610b20565b005b61038d6103723660046147a7565b6000908152600960205260409020546001600160a01b031690565b60405161034691906147cd565b61038d6103a83660046147a7565b6009602052600090815260409020546001600160a01b031681565b6103d66103d13660046147f0565b610b85565b60405163ffffffff9091168152602001610346565b6103626103f936600461478a565b610bc4565b61036261040c36600461482c565b610cd3565b61041a61138881565b60405161ffff9091168152602001610346565b61044061043b36600461478a565b610ce7565b604051908152602001610346565b61047161045c3660046147a7565b6000908152600f602052604090205460ff1690565b6040516103469190614872565b61049161048c3660046147a7565b610d9f565b6040516103469e9d9c9b9a999897969594939291906148d6565b6104be6104b93660046147a7565b610f4f565b6040516103469190614ab3565b6104406104d93660046147a7565b600c6020526000908152604090205481565b6103626104f9366004614ad1565b6111d1565b61036261050c3660046147a7565b61139e565b61036261051f36600461478a565b61142f565b610537610532366004614b6d565b6114c4565b6040516103469190614b88565b61033a61055236600461478a565b6001600160a01b031660009081526021602052604090205460ff1690565b61036261057e366004614b9b565b61155e565b60045461038d906001600160a01b031681565b61044060055481565b6103626115c9565b6104406301e1338081565b6103626115ed565b6103626105c8366004614c10565b611629565b6103626105db3660046147a7565b6116df565b61044062278d0081565b61033a6105f8366004614c81565b6117e3565b6103d661010081565b610362610614366004614cfe565b611b8b565b610362610627366004614d20565b611c83565b60015461038d906001600160a01b031681565b61036261064d3660046147a7565b611dde565b61038d611e1b565b60005461038d906001600160a01b031681565b60035461038d906001600160a01b031681565b610688611e36565b6040516103469190614d72565b6103626106a33660046147a7565b611e7f565b6106886106b63660046147a7565b611fed565b6106ce6106c93660046147a7565b61204a565b604051610346929190614d93565b6104406106ea366004614c10565b60009182526022602090815260408084206001600160a01b0393909316845291905290205490565b61038d6107203660046147a7565b6000908152601060205260409020546001600160a01b031690565b61033a610749366004614c81565b612074565b61044060245481565b610440610765366004614da9565b6122f3565b6108af604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081019190915250604080516101e0810182526018548152601954602080830191909152601a5492820192909252601b546060820152601c546080820152601d5460a0820152601e5460c0820152601f546001600160a01b03811660e083015261ffff600160a01b82048116610100840152600160b01b82048116610120840152600160c01b82048116610140840152600160d01b82048116610160840152600160e01b90910416610180820152905463ffffffff8082166101a0840152600160201b909104166101c082015290565b6040516103469190614de4565b6103626108ca366004614f00565b61263c565b61038d6108dd3660046147a7565b6000908152600a60205260409020546001600160a01b031690565b6104406109063660046147a7565b6126b4565b610362610919366004614f2e565b6126e8565b61036261092c36600461478a565b612802565b61036261093f366004614cfe565b612867565b61033a61095236600461478a565b60076020526000908152604090205460ff1681565b61044060065481565b61036261097e366004614c10565b612928565b6103626109913660046147a7565b6129e4565b6109b96109a43660046147a7565b6000908152600d602052604090205460ff1690565b6040516103469190614f6a565b6103626109d4366004614f78565b612a58565b61038d612b08565b6104406109ef366004614f94565b6001600160a01b03918216600090815260236020908152604080832093909416825291909152205490565b610362610a2836600461478a565b612b13565b610362610a3b366004614fc2565b612bad565b60025461038d906001600160a01b031681565b610362610a6136600461478a565b612d74565b610a79610a74366004614da9565b612de5565b604051610346929190614ffc565b610471610a953660046147a7565b613654565b610362610aa836600461478a565b613836565b61038d610abb3660046147a7565b600a602052600090815260409020546001600160a01b031681565b610362610ae436600461478a565b6138d0565b60006001600160e01b031982166329dd8cb960e11b1480610b1a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b28613961565b6001600160a01b038116610b3b57600080fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f9557d04c1c0b16f93f13b69aed23b3b6ab935bff3c53ac81d17896d3583542ed90600090a250565b60126020528160005260406000208160028110610ba157600080fd5b60089182820401919006600402915091509054906101000a900463ffffffff1681565b610bcc613961565b6001600160a01b03811615801590610bf257506004546001600160a01b03828116911614155b8190610c1b5760405163eddf07f560e01b8152600401610c1291906147cd565b60405180910390fd5b50600480546001600160a01b0319166001600160a01b03831690811790915560009081526021602052604090205460ff16610c99576001600160a01b038116600081815260216020908152604091829020805460ff191660019081179091559151918252600080516020615ebe833981519152910160405180910390a25b7f722ff84c1234b2482061def5c82c6b5080c117b3cbb69d686844a051e4b8e7f381604051610cc891906147cd565b60405180910390a150565b610cdb613961565b610ce481613995565b50565b3360009081526023602090815260408083206001600160a01b038516845290915290205480610d29576040516312d37ee560e31b815260040160405180910390fd5b3360008181526023602090815260408083206001600160a01b0387168085529252822091909155610d5a9183613a45565b6040518181526001600160a01b0383169033907f6458407f0340d4c9ab27e2a8e4cc46dc2773a24dca8086eef793c12bb811a29a9060200160405180910390a3919050565b600860205260009081526040902080546001820154600283015460058401546006850154600786018054959660ff95861696949593946001600160a01b03841694600160a01b90940490931692909190610df890615015565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2490615015565b8015610e715780601f10610e4657610100808354040283529160200191610e71565b820191906000526020600020905b815481529060010190602001808311610e5457829003601f168201915b50505060088401546009850154600a860154600b870154600c8801805497986001600160a01b03958616989490951696509194509291610eb090615015565b80601f0160208091040260200160405190810160405280929190818152602001828054610edc90615015565b8015610f295780601f10610efe57610100808354040283529160200191610f29565b820191906000526020600020905b815481529060010190602001808311610f0c57829003601f168201915b505050600d90930154919250506001600160a01b0381169060ff600160a01b909104168e565b610f576145c1565b60008281526008602090815260409182902082516101e08101909352805483526001810154909183019060ff166003811115610f9557610f95614848565b6003811115610fa657610fa6614848565b8152600282810154602083015260408051808201808352919093019291600385019182845b815481526020019060010190808311610fcb5750505091835250506005820154602082015260068201546001600160a01b0381166040830152600160a01b900460ff16606082015260078201805460809092019161102890615015565b80601f016020809104026020016040519081016040528092919081815260200182805461105490615015565b80156110a15780601f10611076576101008083540402835291602001916110a1565b820191906000526020600020905b81548152906001019060200180831161108457829003601f168201915b505050918352505060088201546001600160a01b0390811660208301526009830154166040820152600a8201546060820152600b8201546080820152600c8201805460a0909201916110f290615015565b80601f016020809104026020016040519081016040528092919081815260200182805461111e90615015565b801561116b5780601f106111405761010080835404028352916020019161116b565b820191906000526020600020905b81548152906001019060200180831161114e57829003601f168201915b5050509183525050600d91909101546001600160a01b038082166020840152600160a01b90910460ff16151560409092019190915260a08201519192508391166111cb5760405163cd6f4a4f60e01b8152600401610c1291815260200190565b50919050565b60006111db613aa4565b805490915060ff600160401b82041615906001600160401b03166000811580156112025750825b90506000826001600160401b0316600114801561121e5750303b155b90508115801561122c575080155b1561124a5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561127357845460ff60401b1916600160401b1785555b6001600160a01b038c1661128657600080fd5b61128f33613acd565b611298876129e4565b6112a18b613836565b6112aa8a612b13565b6112b389610b20565b6112bc88610bc4565b6112c586613995565b73__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__63764346ff6040518163ffffffff1660e01b815260040160006040518083038186803b15801561130957600080fd5b505af415801561131d573d6000803e3d6000fd5b50505050611329611e1b565b6001600160a01b03168c6001600160a01b03161461134a5761134a8c613ade565b831561139057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6113a6613961565b60008181526009602052604090205481906001600160a01b03166113e0576040516381c4951960e01b8152600401610c1291815260200190565b506000818152600960205260409081902080546001600160a01b0319169055517f104eb329a192aef26eddea07c2af5ad2587792e62b37ed4045b6ba59bc5540fc90610cc89083815260200190565b611437613961565b6001600160a01b038116600090815260076020526040902054819060ff16611473576040516321ac7c5f60e01b8152600401610c1291906147cd565b506001600160a01b03811660009081526007602052604090819020805460ff19169055517f56070b80bd617fcd2f7a284861edb488830a38f9dedcd77b2cb2f4eac17743e790610cc89083906147cd565b600b60205260009081526040902080546114dd90615015565b80601f016020809104026020016040519081016040528092919081815260200182805461150990615015565b80156115565780601f1061152b57610100808354040283529160200191611556565b820191906000526020600020905b81548152906001019060200180831161153957829003601f168201915b505050505081565b806000805b828110156115a15761158d85858381811061158057611580615049565b9050602002013533613b05565b6115979083615075565b9150600101611563565b50600081116115c3576040516312d37ee560e31b815260040160405180910390fd5b50505050565b6115d1613961565b6040516001623f026d60e01b0319815260040160405180910390fd5b33806115f7612b08565b6001600160a01b031614611620578060405163118cdaa760e01b8152600401610c1291906147cd565b610ce481613ade565b611631613961565b6001600160a01b0381161580159061166357506000828152600a60205260409020546001600160a01b03828116911614155b8290611685576040516381c4951960e01b8152600401610c1291815260200190565b506000828152600a602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917f53661e3e12f23eea1e322a5352171ad3e4407d1394f869f53bb148c27e00908a9190a35050565b6000546001600160a01b0316331461170a5760405163b56831db60e01b815260040160405180910390fd5b6000818152600d602052604090205460ff16600181600681111561173057611730614848565b1461175557816001826040516337e1404160e01b8152600401610c1293929190615088565b6000828152600d60205260409020805460ff1916600217905560155461177b9042615075565b6000838152600e602052604080822092909255905183917fc44405af9078047712501f519e1fb900c2896c62b488336f84529c72ae16e6f191a281600080516020615e9e833981519152600160026040516117d79291906150a9565b60405180910390a25050565b6000806117ef87610f4f565b6000888152600d602052604090205490915060ff16600481600681111561181857611818614848565b1488600483909192611840576040516337e1404160e01b8152600401610c1293929190615088565b5050506000888152600e6020908152604091829020825160608101845281548152600182015492810192909252600201549181018290529089904281101561189d576040516308f3034360e31b8152600401610c129291906150c4565b50506000898152600860205260409020600c016118bb888a8361514b565b506000898152600d60205260409020805460ff191660051790556101c083015115611b0957846118fe57604051631eae1a4d60e31b815260040160405180910390fd5b600080546040516304cd0b0d60e11b8152600481018c90526001600160a01b039091169063099a161a90602401602060405180830381865afa158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190615204565b610100850151600054604051630651434d60e51b8152600481018e90529293506001600160a01b039182169263c342d8ae928e92169063ca2869a090602401602060405180830381865afa1580156119c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ec9190615204565b60008054906101000a90046001600160a01b03166001600160a01b031663a01649308f6040518263ffffffff1660e01b8152600401611a2d91815260200190565b600060405180830381865afa158015611a4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a7291908101906152e6565b8861016001518961014001518f8f604051611a8e92919061531a565b6040518091039020888f8f6040518a63ffffffff1660e01b8152600401611abd99989796959493929190615398565b602060405180830381865afa158015611ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afe91906153f4565b506001945050611b0e565b600193505b611b1789613bcc565b887f3a140076c461ebc41d74833ae0ee8bbc8079a135a63392098cd381e84350b69b89898989604051611b4d9493929190615411565b60405180910390a288600080516020615e9e83398151915260046005604051611b779291906150a9565b60405180910390a250505095945050505050565b6000546001600160a01b03163314611bb65760405163b56831db60e01b815260040160405180910390fd5b6000828152600860209081526040808320600d9092529091205460ff166002816006811115611be757611be7614848565b14611c0c57836002826040516337e1404160e01b8152600401610c1293929190615088565b6000848152600d6020526040808220805460ff19166003179055600a84018590555185917f11df18edb9bc9cd90a79068e0e208b630202148643d797d6150e7bacb733e63c91a283600080516020615e9e83398151915260026003604051611c759291906150a9565b60405180910390a250505050565b611c8b613961565b80611c9557600080fd5b60ff83166000908152600b602052604081208054611cb290615015565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90615015565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505060ff86166000908152600b60205260409020919250611d51905083858361514b565b508051600003611d9b577f6e4a4ea7f38fc775e616080b155744337e6216848e886a69c918b4ab84da2195848484604051611d8e93929190615443565b60405180910390a16115c3565b7f6eec8996f69c99beec779c1669adc196781eac49caf298b71ae09c7ebc6467ce84828585604051611dd09493929190615469565b60405180910390a150505050565b611de6613961565b60248190556040518181527f626be19f07270f3ff739849263a0cfde670d32d05f3ce9419313c38e014ed24190602001610cc8565b600080611e26613fd5565b546001600160a01b031692915050565b611e5a60405180606001604052806000815260200160008152602001600081525090565b5060408051606081018252601554815260165460208201526017549181019190915290565b6000818152600d602052604090205460ff166006816006811115611ea557611ea5614848565b148290611ec857604051637cb2d48360e11b8152600401610c1291815260200190565b506000828152600c60205260409020548281611efa576040516345ba89d560e11b8152600401610c1291815260200190565b506000838152600c60205260408120819055611f1584613ff9565b6000858152601160205260409020546002549192506001600160a01b0390811691611f439183911685613a45565b60025460405163da19b69760e01b81526001600160a01b039091169063da19b69790611f79908890879087908790600401615498565b600060405180830381600087803b158015611f9357600080fd5b505af1158015611fa7573d6000803e3d6000fd5b50505050847f5297818f48a66292b8b3e2caab83eec531b669bb20807fd38cf006adb2a07317848451604051611fde9291906150c4565b60405180910390a25050505050565b61201160405180606001604052806000815260200160008152602001600081525090565b506000908152600e6020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915290565b6000818152600d6020526040812054819060ff1661206884826140ec565b50909590945092505050565b60008061208087610f4f565b6000888152600d6020908152604080832054600e835292819020815160608101835281548152600182015493810193909352600201549082015291925060ff169073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__631a2dd41d8a8460068111156120ee576120ee614848565b60208501516060880151600160200201516101608901516040516001600160e01b031960e088901b168152600481019590955260ff90931660248501526044840191909152606483015260848201524260a482015260c40160006040518083038186803b15801561215e57600080fd5b505af4158015612172573d6000803e3d6000fd5b505050506000888860405161218892919061531a565b604080519182900390912060008c815260086020908152838220600b01839055600d905291909120805460ff191660041790556017549091506121cb9042615075565b60008b8152600e6020526040908190206002019190915560a08501519051632f0e1bbf60e01b81526001600160a01b0390911690632f0e1bbf90612219908d9085908c908c906004016154d0565b6020604051808303816000875af1158015612238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225c91906153f4565b945088888661228057604051632f9f8ab960e01b8152600401610c129291906154fa565b5050897f7cc27e4a5626cbc4f8ba1a927b0448de55e6a114bc87660331270c5109ade0718a8a6040516122b49291906154fa565b60405180910390a289600080516020615e9e833981519152600360046040516122de9291906150a9565b60405180910390a25050505095945050505050565b600080600b8161230960a0860160808701614b6d565b60ff1660ff168152602001908152602001600020805461232890615015565b90501161233457600080fd5b6000601281612346602086018661550e565b600381111561235757612357614848565b600381111561236857612368614848565b815260208101919091526040908101600020815180830190925260028282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116123915790505050604080516101e0810182526018548152601954602080830191909152601a5492820192909252601b546060820152601c546080820152601d5460a0820152601e5460c0820152601f546001600160a01b03811660e083015261ffff600160a01b82048116610100840152600160b01b82048116610120840152600160c01b82048116610140840152600160d01b82048116610160840152600160e01b90910416610180820152815463ffffffff8082166101a0840152600160201b909104166101c082015294955073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9350634ff2c9f592508591506124c49088018861550e565b60038111156124d5576124d5614848565b846101a00151856101c001516040518563ffffffff1660e01b81526004016125009493929190615552565b60006040518083038186803b15801561251857600080fd5b505af415801561252c573d6000803e3d6000fd5b5050505073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__634ae7776b6018601560008054906101000a90046001600160a01b03166001600160a01b0316639f0f874a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c39190615204565b604080516001600160e01b031960e087901b1681526125f394939291899160208d0135918d013590600401615585565b602060405180830381865af4158015612610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126349190615204565b949350505050565b612644613961565b816001600160a01b03811661266d5760405163eddf07f560e01b8152600401610c1291906147cd565b506001600160a01b038216600081815260216020908152604091829020805460ff19168515159081179091559151918252600080516020615ebe83398151915291016117d7565b60006126c08233613b05565b9050600081116126e3576040516312d37ee560e31b815260040160405180910390fd5b919050565b6000546001600160a01b031633148061270b57506003546001600160a01b031633145b61272857604051639e75a8b560e01b815260040160405180910390fd5b60008160ff1611801561273f5750600d60ff821611155b61274857600080fd5b6000828152600d602052604090205460ff1673__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__637e262a6f8483600681111561278757612787614848565b6040516001600160e01b031960e085901b168152600481019290925260ff16602482015260440160006040518083038186803b1580156127c657600080fd5b505af41580156127da573d6000803e3d6000fd5b505050506127fd83828460ff16600d8111156127f8576127f8614848565b614120565b505050565b61280a613961565b6001600160a01b03811661281d57600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517f4ccc8ed483c7c44c3602c3c38afc2c014a8f1d2dc210dfe58ebeeeead230f8e090600090a250565b6003546001600160a01b03163314612892576040516357d6948d60e11b815260040160405180910390fd5b60025460405163c1ab0f1f60e01b81526001600160a01b039091169063c1ab0f1f906128c490859085906004016150c4565b600060405180830381600087803b1580156128de57600080fd5b505af11580156128f2573d6000803e3d6000fd5b50505050817f4f41a3b0a032ebcae925f2ace77d507435840ca4b2dbaffdd7723fa8d72ee542826040516117d791815260200190565b612930613961565b6001600160a01b0381161580159061296257506000828152600960205260409020546001600160a01b03828116911614155b8290612984576040516381c4951960e01b8152600401610c1291815260200190565b5060008281526009602090815260409182902080546001600160a01b0319166001600160a01b03851617905590518381527ff4041a3f914dac3bc9bf5f003ba41f28dbb84abe42f4e07c76266f5c8ceecb69910160405180910390a15050565b6129ec613961565b600081118015612a0057506301e133808111155b8190612a22576040516313b783af60e21b8152600401610c1291815260200190565b5060058190556040518181527fba0716ba1ee2ea8ecc4c64119b4537cdb42a99d82acf92af5b87607b8b52355290602001610cc8565b612a60613961565b60405163de5fa95560e01b815273__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9063de5fa95590612a979084906004016157dc565b60006040518083038186803b158015612aaf57600080fd5b505af4158015612ac3573d6000803e3d6000fd5b505050508060188181612ad69190615812565b9050507fbf3951313e980027eb48ce363fdb707286195ec6a0f802ac153927cf929c3fc681604051610cc891906157dc565b600080611e266141cb565b612b1b613961565b6001600160a01b03811615801590612b4157506001546001600160a01b03828116911614155b8190612b61576040516320252f0b60e01b8152600401610c1291906147cd565b50600180546001600160a01b0319166001600160a01b0383161790556040517fad4055f18cdad6f4bdd71afe3a72cbeee964217943e1bde38f138289e981a9a790610cc89083906147cd565b612bb5613961565b604080516101e0810182526018548152601954602080830191909152601a5482840152601b546060830152601c546080830152601d5460a0830152601e5460c0830152601f546001600160a01b03811660e084015261ffff600160a01b82048116610100850152600160b01b82048116610120850152600160c01b82048116610140850152600160d01b82048116610160850152600160e01b909104166101808301525463ffffffff8082166101a08401819052600160201b909204166101c08301819052925163588370a960e11b8152919273__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9263b106e15292612cb29287926004016159d2565b60006040518083038186803b158015612cca57600080fd5b505af4158015612cde573d6000803e3d6000fd5b505050508160126000856003811115612cf957612cf9614848565b6003811115612d0a57612d0a614848565b81526020810191909152604001600020612d25916002614641565b50826003811115612d3857612d38614848565b7f8b56fae526eee054f0849759a99fc7d4ff3823824ebf097a56f7d78adb6b34fa83604051612d679190615a2d565b60405180910390a2505050565b612d7c613961565b6000612d866141cb565b80546001600160a01b0319166001600160a01b0384169081178255909150612dac611e1b565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6000612def6145c1565b6004546001600160a01b031660008181526021602052604090205460ff16612e2b576040516335b99e4360e11b8152600401610c1291906147cd565b506000601281612e3e602087018761550e565b6003811115612e4f57612e4f614848565b6003811115612e6057612e60614848565b815260208101919091526040908101600020815180830190925260028282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411612e895790505050505050905060076000856060016020810190612ee3919061478a565b6001600160a01b0316815260208101919091526040016000205460ff16612f10608086016060870161478a565b90612f2f5760405163295a6a6f60e11b8152600401610c1291906147cd565b506000612f3b856122f3565b601654601754600554604051637cad360760e01b815293945073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__93637cad360793612f859360208c019342938990600401615a6e565b60006040518083038186803b158015612f9d57600080fd5b505af4158015612fb1573d6000803e3d6000fd5b505060068054965086925090506000612fc983615a9f565b919050555060004485604051602001612fe39291906150c4565b60408051808303601f1901815291815281516020928301206000888152600c84528281208690556004546011855283822080546001600160a01b039283166001600160a01b031991821617909155601f8054601388528685208054600160b01b90920461ffff1661ffff19909216919091179055546014875285842080549190931690821617909155600d8552838220805460ff191660011790556010909452829020805490931633179092556016549192506130a39190880135615075565b6000868152600e60209081526040909120600101919091558185526130ca9087018761550e565b846020019060038111156130e0576130e0614848565b908160038111156130f3576130f3614848565b90525042604080860191909152805180820182529060208801906002908390839080828437600092019190915250505060608086019190915261313c906080880190880161478a565b6001600160a01b031660a08086019190915261315d90870160808801614b6d565b60ff1660c08086019190915261317590870187615ab8565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060e0808601919091526131c3906101008801908801615afe565b15156101c0850152336101a08501526000600b816131e760a08a0160808b01614b6d565b60ff1660ff168152602001908152602001600020805461320690615015565b80601f016020809104026020016040519081016040528092919081815260200182805461323290615015565b801561327f5780601f106132545761010080835404028352916020019161327f565b820191906000526020600020905b81548152906001019060200180831161326257829003601f168201915b50505050509050600087606001602081019061329b919061478a565b6001600160a01b031663fefd9a8b8885856132b960a08e018e615ab8565b8e8060c001906132c99190615ab8565b6040518863ffffffff1660e01b81526004016132eb9796959493929190615b1b565b6020604051808303816000875af115801561330a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332e9190615204565b6000818152600960205260409020549091506001600160a01b0316818161336b576040516381c4951960e01b8152600401610c1291815260200190565b506000828152600a60205260409020546001600160a01b031682816133a6576040516381c4951960e01b8152600401610c1291815260200190565b50608088018390526001600160a01b038083166101008a0152811661012089015260008981526008602090815260409091208951815590890151600180830180548c94939260ff19919091169083600381111561340557613405614848565b02179055506040820151816002015560608201518160030190600261342b9291906146e3565b506080820151600582015560a082015160068201805460c085015160ff16600160a01b026001600160a81b03199091166001600160a01b039093169290921791909117905560e082015160078201906134849082615b70565b506101008201516008820180546001600160a01b039283166001600160a01b031991821617909155610120840151600984018054919093169116179055610140820151600a820155610160820151600b820155610180820151600c8201906134ec9082615b70565b506101a0820151600d90910180546101c0909301511515600160a01b026001600160a81b03199093166001600160a01b03928316179290921790915560045461353891163330896141ef565b60005460405163291a691b60e01b81526001600160a01b039091169063291a691b9061356c908c9089908c90600401615c28565b6020604051808303816000875af115801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af91906153f4565b6135cc57604051630d8dbe2560e01b815260040160405180910390fd5b6135dc60808b0160608c0161478a565b6001600160a01b03167f5090c9764b5cd13df7afc0013f733dfbe6eaf1b6ddc22a5e291fa387efd4c15e8a8a604051613616929190614ffc565b60405180910390a288600080516020615e9e833981519152600060016040516136409291906150a9565b60405180910390a250505050505050915091565b6000818152600d602052604081205460ff1673__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__637e262a6f8483600681111561369357613693614848565b6040516001600160e01b031960e085901b168152600481019290925260ff16602482015260440160006040518083038186803b1580156136d257600080fd5b505af41580156136e6573d6000803e3d6000fd5b505050506000806136f785846140ec565b90955090925090508161372057604051639f65d93560e01b815260048101869052602401610c12565b60245480156138225760006137358284615075565b9050804210801561375d57506000878152601060205260409020546001600160a01b03163314155b8015613782575061376c611e1b565b6001600160a01b0316336001600160a01b031614155b80156137fe575060005460405163a8a4d69b60e01b8152600481018990523360248201526001600160a01b039091169063a8a4d69b90604401602060405180830381865afa1580156137d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137fc91906153f4565b155b156138205786816040516324d4b88f60e21b8152600401610c129291906150c4565b505b61382d868587614120565b50505050919050565b61383e613961565b6001600160a01b0381161580159061386457506000546001600160a01b03828116911614155b8190613884576040516375ac4eb760e11b8152600401610c1291906147cd565b50600080546001600160a01b0319166001600160a01b0383161790556040517f80052b810d39120cf6c976cca504a21703f585521dc7a41c6d241090e6c579b690610cc89083906147cd565b6001600160a01b038116600090815260076020526040902054819060ff161561390d5760405163b29d459560e01b8152600401610c1291906147cd565b506001600160a01b03811660009081526007602052604090819020805460ff19166001179055517fb8d368517268f297fff00825d67d098763117d061360d31027be5b2e1a59d46790610cc89083906147cd565b3361396a611e1b565b6001600160a01b031614613993573360405163118cdaa760e01b8152600401610c1291906147cd565b565b6040516336523a5f60e01b815273__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__906336523a5f906139d190849062278d0090600401615c87565b60006040518083038186803b1580156139e957600080fd5b505af41580156139fd573d6000803e3d6000fd5b5050508135601555506020810135601655604080820135601755517f7e86ba16b805e2835af5c5b7aa5a942ced8bcc1fb95a05fbe42dae3862350a1690610cc8908390615ca2565b6040516001600160a01b038381166024830152604482018390526127fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614228565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b1a565b613ad5614290565b610ce4816142b5565b6000613ae86141cb565b80546001600160a01b03191681559050613b01826142e7565b5050565b60008281526022602090815260408083206001600160a01b038516845290915281205490819003613b3857506000610b1a565b60008381526022602090815260408083206001600160a01b03808716855290835281842084905586845260119092529091205416613b77818484613a45565b806001600160a01b0316836001600160a01b0316857fd7566a1f449b7ee89a6af29f319e117c231ea862057eb65395ca2bf70283b1c885604051613bbd91815260200190565b60405180910390a45092915050565b6000805460405162beb08960e51b8152600481018490526001600160a01b03909116906317d6112090602401600060405180830381865afa158015613c15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c3d9190810190615d0e565b5080516000848152600c60209081526040808320805490849055601190925282205493945091926001600160a01b031690829003613ce2576002546040516341489f1560e01b81526001600160a01b03909116906341489f1590613ca990889088908690600401615d77565b600060405180830381600087803b158015613cc357600080fd5b505af1158015613cd7573d6000803e3d6000fd5b505050505050505050565b82600003613d8a576000858152601060205260409020546001600160a01b03168015613d1c57613d1c6001600160a01b0383168285613a45565b6002546040516341489f1560e01b81526001600160a01b03909116906341489f1590613d5090899089908790600401615d77565b600060405180830381600087803b158015613d6a57600080fd5b505af1158015613d7e573d6000803e3d6000fd5b50505050505050505050565b600085815260136020908152604080832054601490925282205461ffff909116906001600160a01b03168115801590613dcb57506001600160a01b03811615155b15613e8057612710613de161ffff841687615da8565b613deb9190615dbf565b92508215613e80576001600160a01b03808216600090815260236020908152604080832093881683529290529081208054859290613e2a908490615075565b92505081905550836001600160a01b0316816001600160a01b0316897f62d886e26db625296d628b1cf7f47f83051f9d83e216a8ad38041673a2058f9a86604051613e7791815260200190565b60405180910390a45b6000613e8c8487615de1565b60405160016233c60b60e11b031981526004810182905260248101899052604481018b905290915060009073__$7d5fcb3ae6c8ef655f31d78f0108bdc679$__9063ff9873ea90606401600060405180830381865af4158015613ef3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f1b9190810190615df4565b9050613f298a8a8389614343565b897fac9fe8ad7f55eac03284399116ecafc104f10459773f4cdf47063c46e5be335a8a83604051613f5b929190615e28565b60405180910390a26002546040516341489f1560e01b81526001600160a01b03909116906341489f1590613f97908d908d908b90600401615d77565b600060405180830381600087803b158015613fb157600080fd5b505af1158015613fc5573d6000803e3d6000fd5b5050505050505050505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b6000818152600f602052604090205460609060ff16600181600d81111561402257614022614848565b148061403f5750600281600d81111561403d5761403d614848565b145b156140785760005b604051908082528060200260200182016040528015614070578160200160208202803683370190505b509392505050565b60005460405162beb08960e51b8152600481018590526001600160a01b03909116906317d6112090602401600060405180830381865afa9250505080156140e157506040513d6000823e601f3d908101601f191682016040526140de9190810190615d0e565b60015b614070576000614047565b60008060006140fb8585614458565b92509050801580159061410d57508042115b92508261411957600091505b9250925092565b6000838152600d6020526040902080546006919060ff191660018302179055506000838152600f60205260409020805482919060ff1916600183600d81111561416b5761416b614848565b021790555082600080516020615e9e8339815191528360066040516141919291906150a9565b60405180910390a2827fe20209be7caae6e76291267cfa711353981274bf127e94f16eb9ec44b68582bb8383604051612d67929190615e82565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0090565b6040516001600160a01b0384811660248301528381166044830152606482018390526115c39186918216906323b872dd90608401613a72565b600080602060008451602086016000885af18061424b576040513d6000823e3d81fd5b50506000513d91508115614263578060011415614270565b6001600160a01b0384163b155b156115c35783604051635274afe760e01b8152600401610c1291906147cd565b6142986145a7565b61399357604051631afcd79f60e31b815260040160405180910390fd5b6142bd614290565b6001600160a01b038116611620576000604051631e4fbdf760e01b8152600401610c1291906147cd565b60006142f1613fd5565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b825160005b8181101561445057600084828151811061436457614364615049565b602002602001015190508060000361437c5750614448565b600087815260226020526040812087518392908990869081106143a1576143a1615049565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546143d89190615075565b92505081905550836001600160a01b03168683815181106143fb576143fb615049565b60200260200101516001600160a01b0316887fdf636f3c38711e6702b8ef7055cc13b79e969206c537757c1fee37dbbc71df748460405161443e91815260200190565b60405180910390a4505b600101614348565b505050505050565b600080600183600681111561446f5761446f614848565b036144ec57600054604051632800d82960e01b8152600481018690526001600160a01b0390911690632800d82990602401602060405180830381865afa1580156144bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e19190615204565b6001915091506145a0565b6000848152600e6020908152604091829020825160608101845281548152600182015492810192909252600290810154928201929092529084600681111561453657614536614848565b0361454757519150600390506145a0565b600384600681111561455b5761455b614848565b0361456f57602001519150600690506145a0565b600484600681111561458357614583614848565b0361459757604001519150600a90506145a0565b60008092509250505b9250929050565b60006145b1613aa4565b54600160401b900460ff16919050565b604080516101e08101909152600080825260208201908152602001600081526020016145eb614711565b81526000602082018190526040820181905260608083018290526080830181905260a0830182905260c0830182905260e08301829052610100830182905261012083015261014082018190526101609091015290565b6001830191839082156146d35791602002820160005b838211156146a157833563ffffffff1683826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614657565b80156146d15782816101000a81549063ffffffff02191690556004016020816003010492830192600103026146a1565b505b506146df92915061472f565b5090565b82600281019282156146d3579160200282015b828111156146d35782518255916020019190600101906146f6565b60405180604001604052806002906020820280368337509192915050565b5b808211156146df5760008155600101614730565b60006020828403121561475657600080fd5b81356001600160e01b03198116811461476e57600080fd5b9392505050565b6001600160a01b0381168114610ce457600080fd5b60006020828403121561479c57600080fd5b813561476e81614775565b6000602082840312156147b957600080fd5b5035919050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b8035600481106126e357600080fd5b6000806040838503121561480357600080fd5b61480c836147e1565b946020939093013593505050565b6000606082840312156111cb57600080fd5b60006060828403121561483e57600080fd5b61476e838361481a565b634e487b7160e01b600052602160045260246000fd5b600e811061486e5761486e614848565b9052565b60208101610b1a828461485e565b6004811061486e5761486e614848565b6000815180845260005b818110156148b65760208185018101518683018201520161489a565b506000602082860101526020601f19601f83011685010191505092915050565b8e81526148e6602082018f614880565b8c60408201528b60608201526148ff608082018c6147c0565b60ff8a1660a08201526101c060c082015260006149206101c083018b614890565b61492d60e084018b6147c0565b61493b61010084018a6147c0565b876101208401528661014084015282810361016084015261495c8187614890565b91505061496d6101808301856147c0565b8215156101a08301529f9e505050505050505050505050505050565b8060005b60028110156115c357815184526020938401939091019060010161498d565b80518252600060208201516149c46020850182614880565b506040820151604084015260608201516149e16060850182614989565b50608082015160a084015260a08201516149fe60c08501826147c0565b5060c082015160ff811660e08501525060e0820151610200610100850152614a2a610200850182614890565b9050610100830151614a406101208601826147c0565b50610120830151614a556101408601826147c0565b506101408301516101608501526101608301516101808501526101808301518482036101a0860152614a878282614890565b9150506101a0830151614a9e6101c08601826147c0565b506101c08301518015156101e0860152614070565b60208152600061476e60208301846149ac565b80356126e381614775565b6000806000806000806000610120888a031215614aed57600080fd5b8735614af881614775565b96506020880135614b0881614775565b95506040880135614b1881614775565b94506060880135614b2881614775565b93506080880135614b3881614775565b925060a08801359150614b4e8960c08a0161481a565b905092959891949750929550565b803560ff811681146126e357600080fd5b600060208284031215614b7f57600080fd5b61476e82614b5c565b60208152600061476e6020830184614890565b60008060208385031215614bae57600080fd5b82356001600160401b03811115614bc457600080fd5b8301601f81018513614bd557600080fd5b80356001600160401b03811115614beb57600080fd5b8560208260051b8401011115614c0057600080fd5b6020919091019590945092505050565b60008060408385031215614c2357600080fd5b823591506020830135614c3581614775565b809150509250929050565b60008083601f840112614c5257600080fd5b5081356001600160401b03811115614c6957600080fd5b6020830191508360208285010111156145a057600080fd5b600080600080600060608688031215614c9957600080fd5b8535945060208601356001600160401b03811115614cb657600080fd5b614cc288828901614c40565b90955093505060408601356001600160401b03811115614ce157600080fd5b614ced88828901614c40565b969995985093965092949392505050565b60008060408385031215614d1157600080fd5b50508035926020909101359150565b600080600060408486031215614d3557600080fd5b614d3e84614b5c565b925060208401356001600160401b03811115614d5957600080fd5b614d6586828701614c40565b9497909650939450505050565b81518152602080830151908201526040808301519082015260608101610b1a565b82151581526040810161476e602083018461485e565b600060208284031215614dbb57600080fd5b81356001600160401b03811115614dd157600080fd5b8201610100818503121561476e57600080fd5b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151614e3f60e08401826147c0565b50610100830151614e5761010084018261ffff169052565b50610120830151614e6f61012084018261ffff169052565b50610140830151614e8761014084018261ffff169052565b50610160830151614e9f61016084018261ffff169052565b50610180830151614eb761018084018261ffff169052565b506101a0830151614ed16101a084018263ffffffff169052565b506101c0830151614eeb6101c084018263ffffffff169052565b5092915050565b8015158114610ce457600080fd5b60008060408385031215614f1357600080fd5b8235614f1e81614775565b91506020830135614c3581614ef2565b60008060408385031215614f4157600080fd5b82359150614f5160208401614b5c565b90509250929050565b6007811061486e5761486e614848565b60208101610b1a8284614f5a565b60006101e0828403128015614f8c57600080fd5b509092915050565b60008060408385031215614fa757600080fd5b8235614fb281614775565b91506020830135614c3581614775565b60008060608385031215614fd557600080fd5b614fde836147e1565b915083606084011115614ff057600080fd5b50926020919091019150565b82815260406020820152600061263460408301846149ac565b600181811c9082168061502957607f821691505b6020821081036111cb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610b1a57610b1a61505f565b8381526060810161509c6020830185614f5a565b6126346040830184614f5a565b604081016150b78285614f5a565b61476e6020830184614f5a565b918252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b601f8211156127fd57806000526020600020601f840160051c8101602085101561510f5750805b601f840160051c820191505b8181101561512f576000815560010161511b565b5050505050565b600019600383901b1c191660019190911b1790565b6001600160401b03831115615162576151626150d2565b615176836151708354615015565b836150e8565b6000601f8411600181146151a457600085156151925750838201355b61519c8682615136565b84555061512f565b600083815260209020601f19861690835b828110156151d557868501358255602094850194600190920191016151b5565b50868210156151f25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561521657600080fd5b5051919050565b604051601f8201601f191681016001600160401b0381118282101715615245576152456150d2565b604052919050565b60006001600160401b03821115615266576152666150d2565b5060051b60200190565b600082601f83011261528157600080fd5b815161529461528f8261524d565b61521d565b8082825260208201915060208360051b8601019250858311156152b657600080fd5b602085015b838110156152dc5780516152ce81614775565b8352602092830192016152bb565b5095945050505050565b6000602082840312156152f857600080fd5b81516001600160401b0381111561530e57600080fd5b61263484828501615270565b8183823760009101908152919050565b600081518084526020840193506020830160005b828110156153655781516001600160a01b031686526020958601959091019060010161533e565b5093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b898152886020820152610100604082015260006153b961010083018a61532a565b8860608401528760808401528660a08401528560c084015282810360e08401526153e481858761536f565b9c9b505050505050505050505050565b60006020828403121561540657600080fd5b815161476e81614ef2565b60408152600061542560408301868861536f565b828103602084015261543881858761536f565b979650505050505050565b60ff8416815260406020820152600061546060408301848661536f565b95945050505050565b60ff851681526060602082015260006154856060830186614890565b828103604084015261543881858761536f565b8481528360208201526080604082015260006154b7608083018561532a565b905060018060a01b038316606083015295945050505050565b8481528360208201526060604082015260006154f060608301848661536f565b9695505050505050565b60208152600061263460208301848661536f565b60006020828403121561552057600080fd5b61476e826147e1565b8060005b60028110156115c357815163ffffffff1684526020938401939091019060010161552d565b60a081016155608287615529565b60ff94909416604082015263ffffffff92831660608201529116608090910152919050565b8654815260018701546020820152600287015460408201526003870154606082015260048701546080820152600587015460a0820152600687015460c082015260078701546102e08201906155e660e084016001600160a01b0383166147c0565b60a081901c61ffff1661010084015260b081901c61ffff1661012084015260c081901c61ffff1661014084015260d081901c61ffff1661016084015260e081901c61ffff1661018084015250600888015463ffffffff81166101a0840152602081901c63ffffffff166101c08401525086546101e08301526001870154610200830152600287015461022083015285610240830152615689610260830186615529565b6102a08201939093526102c00152949350505050565b61ffff81168114610ce457600080fd5b80356126e38161569f565b63ffffffff81168114610ce457600080fd5b80356126e3816156ba565b803582526020808201359083015260408082013590830152606080820135908301526080808201359083015260a0808201359083015260c0808201359083015261572360e08201614ac6565b61573060e08401826147c0565b5061573e61010082016156af565b61ffff1661010083015261575561012082016156af565b61ffff1661012083015261576c61014082016156af565b61ffff1661014083015261578361016082016156af565b61ffff1661016083015261579a61018082016156af565b61ffff166101808301526157b16101a082016156cc565b63ffffffff166101a08301526157ca6101c082016156cc565b63ffffffff81166101c0840152505050565b6101e08101610b1a82846156d7565b60008135610b1a81614775565b60008135610b1a8161569f565b60008135610b1a816156ba565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a0820135600582015560c082013560068201556007810161588261586560e085016157eb565b82546001600160a01b0319166001600160a01b0391909116178255565b6158b261589261010085016157f8565b82805461ffff60a01b191660a09290921b61ffff60a01b16919091179055565b6158e26158c261012085016157f8565b82805461ffff60b01b191660b09290921b61ffff60b01b16919091179055565b6159126158f261014085016157f8565b82805461ffff60c01b191660c09290921b61ffff60c01b16919091179055565b61594261592261016085016157f8565b82805461ffff60d01b191660d09290921b61ffff60d01b16919091179055565b61597261595261018085016157f8565b82805461ffff60e01b191660e09290921b61ffff60e01b16919091179055565b506008810161599e6159876101a08501615805565b825463ffffffff191663ffffffff91909116178255565b6127fd6159ae6101c08501615805565b82805463ffffffff60201b191660209290921b63ffffffff60201b16919091179055565b60808101818560005b6002811015615a0a5781356159ef816156ba565b63ffffffff16835260209283019291909101906001016159db565b50505063ffffffff8416604083015263ffffffff83166060830152949350505050565b60408101818360005b6002811015615a65578135615a4a816156ba565b63ffffffff1683526020928301929190910190600101615a36565b50505092915050565b60e08101604088833760408201969096526060810194909452608084019290925260a083015260c090910152919050565b600060018201615ab157615ab161505f565b5060010190565b6000808335601e19843603018112615acf57600080fd5b8301803591506001600160401b03821115615ae957600080fd5b6020019150368190038213156145a057600080fd5b600060208284031215615b1057600080fd5b813561476e81614ef2565b87815286602082015260a060408201526000615b3a60a0830188614890565b8281036060840152615b4d81878961536f565b90508281036080840152615b6281858761536f565b9a9950505050505050505050565b81516001600160401b03811115615b8957615b896150d2565b615b9d81615b978454615015565b846150e8565b6020601f821160018114615bcb5760008315615bb95750848201515b615bc38482615136565b85555061512f565b600084815260208120601f198516915b82811015615bfb5787850151825560209485019460019092019101615bdb565b5084821015615c195786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b8381526020810183905260808101604082018360005b6002811015615c6357815163ffffffff16835260209283019290910190600101615c3e565b505050949350505050565b8035825260208082013590830152604090810135910152565b60808101615c958285615c6e565b8260608301529392505050565b60608101610b1a8284615c6e565b600082601f830112615cc157600080fd5b8151615ccf61528f8261524d565b8082825260208201915060208360051b860101925085831115615cf157600080fd5b602085015b838110156152dc578051835260209283019201615cf6565b60008060408385031215615d2157600080fd5b82516001600160401b03811115615d3757600080fd5b615d4385828601615270565b602085015190935090506001600160401b03811115615d6157600080fd5b615d6d85828601615cb0565b9150509250929050565b838152606060208201526000615d90606083018561532a565b905060018060a01b0383166040830152949350505050565b8082028115828204841417610b1a57610b1a61505f565b600082615ddc57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b1a57610b1a61505f565b600060208284031215615e0657600080fd5b81516001600160401b03811115615e1c57600080fd5b61263484828501615cb0565b604081526000615e3b604083018561532a565b828103602084015280845180835260208301915060208601925060005b81811015615e76578351835260209384019390920191600101615e58565b50909695505050505050565b60408101615e908285614f5a565b61476e602083018461485e56fe1b418a230a21d37a078bf8f16decbde8ccceacd77159371f62f0d4ea00d19967be98ad384b5e8da1954c30278ba3c2c981c7eafb2c01126a9d4b275f88fad77da164736f6c634300081c000a"; readonly linkReferences: {"project/contracts/lib/EnclavePricing.sol":{"EnclavePricing":[{"length":20,"start":5024},{"length":20,"start":8604},{"length":20,"start":9586},{"length":20,"start":9739},{"length":20,"start":10293},{"length":20,"start":11080},{"length":20,"start":11619},{"length":20,"start":12335},{"length":20,"start":14145},{"length":20,"start":14973},{"length":20,"start":16274}]}}; readonly deployedLinkReferences: {"project/contracts/lib/EnclavePricing.sol":{"EnclavePricing":[{"length":20,"start":4807},{"length":20,"start":8387},{"length":20,"start":9369},{"length":20,"start":9522},{"length":20,"start":10076},{"length":20,"start":10863},{"length":20,"start":11402},{"length":20,"start":12118},{"length":20,"start":13928},{"length":20,"start":14756},{"length":20,"start":16057}]}}; readonly immutableReferences: {}; readonly inputSourceName: "project/contracts/Enclave.sol"; readonly buildInfoId: "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"; }; import "hardhat/types/artifacts"; declare module "hardhat/types/artifacts" { interface ArtifactMap { ["Enclave"]: Enclave$Type; ["contracts/Enclave.sol:Enclave"]: Enclave$Type; } }