diff --git a/contracts/gas-snapshots/workflow.gas-snapshot b/contracts/gas-snapshots/workflow.gas-snapshot index 338ad0f28c..95d57afe8b 100644 --- a/contracts/gas-snapshots/workflow.gas-snapshot +++ b/contracts/gas-snapshots/workflow.gas-snapshot @@ -75,35 +75,36 @@ WorkflowRegistry_activateWorkflow:test_WhenTheCallerIsAnAuthorizedAddress() (gas WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenCallerIsNotLinkedAsAnOwner() (gas: 18801) WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenNoDONLimitIsSetGloballyForTheDonFamily() (gas: 563363) WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenNoWorkflowExistsForTheGivenWorkflowId() (gas: 155419) -WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenTheWorkflowExistsButOwnerDoesNotEqualCaller() (gas: 1165391) -WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenTheWorkflowExistsOwnerMatchesButStatusIsACTIVE() (gas: 1063116) -WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenThereAreAlreadyTooManyWorkflowsInTheDON() (gas: 2166992) -WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenThereIsEnoughSpaceForTheWorkflowInTheDON() (gas: 1693263) +WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenTheWorkflowExistsButOwnerDoesNotEqualCaller() (gas: 1165423) +WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenTheWorkflowExistsOwnerMatchesButStatusIsACTIVE() (gas: 1063148) +WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenThereAreAlreadyTooManyWorkflowsInTheDON() (gas: 2167113) +WorkflowRegistry_activateWorkflow:test_activateWorkflow_WhenThereIsEnoughSpaceForTheWorkflowInTheDON() (gas: 1693384) WorkflowRegistry_adminBatchPauseWorkflows:test_adminBatchPauseWorkflows_WhenCallerIsNOTTheContractOwner() (gas: 17095) -WorkflowRegistry_adminBatchPauseWorkflows:test_adminBatchPauseWorkflows_WhenWorkflowIdsIsNotZero() (gas: 1451827) +WorkflowRegistry_adminBatchPauseWorkflows:test_adminBatchPauseWorkflows_WhenWorkflowIdsIsNotZero() (gas: 1451995) WorkflowRegistry_adminBatchPauseWorkflows:test_adminBatchPauseWorkflows_WhenWorkflowIdsLengthIs0() (gas: 12487) WorkflowRegistry_adminPauseAllByDON:test_adminPauseAllByDON_WhenCallerIsNOTTheContractOwner() (gas: 16502) -WorkflowRegistry_adminPauseAllByDON:test_adminPauseAllByDON_WhenThereAreActiveWorkflows() (gas: 1466160) +WorkflowRegistry_adminPauseAllByDON:test_adminPauseAllByDON_WhenThereAreActiveWorkflows() (gas: 1466328) WorkflowRegistry_adminPauseAllByOwner:test_adminPauseAllByOwner_WhenCallerIsNOTTheContractOwner() (gas: 15761) -WorkflowRegistry_adminPauseAllByOwner:test_adminPauseAllByOwner_WhenThereAreActiveWorkflows() (gas: 1465443) +WorkflowRegistry_adminPauseAllByOwner:test_adminPauseAllByOwner_WhenThereAreActiveWorkflows() (gas: 1465611) WorkflowRegistry_adminPauseWorkflow:test_adminPauseWorkflow_WhenCallerIsNOTTheContractOwner() (gas: 15999) -WorkflowRegistry_adminPauseWorkflow:test_adminPauseWorkflow_WhenWorkflowStatusIsACTIVE() (gas: 941856) -WorkflowRegistry_adminPauseWorkflow:test_adminPauseWorkflow_WhenWorkflowStatusIsPAUSED() (gas: 812738) -WorkflowRegistry_allowlistRequest:test_allowlistRequest_WhenTheUserIsLinked() (gas: 563257) -WorkflowRegistry_allowlistRequest:test_allowlistRequest_WhenTheUserIsNotLinked() (gas: 34578) -WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenActivationWouldExceedCallersPer_DONCap() (gas: 1154659) -WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenAllListedWorkflowsAreAlreadyACTIVE() (gas: 1064107) -WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenAtLeastOneWorkflowIdIsNotOwnedByCaller() (gas: 897863) +WorkflowRegistry_adminPauseWorkflow:test_adminPauseWorkflow_WhenWorkflowStatusIsACTIVE() (gas: 941977) +WorkflowRegistry_adminPauseWorkflow:test_adminPauseWorkflow_WhenWorkflowStatusIsPAUSED() (gas: 812770) +WorkflowRegistry_allowlistRequest:test_allowlistRequest_WhenTheUserAlreadyHasARequest() (gas: 445697) +WorkflowRegistry_allowlistRequest:test_allowlistRequest_WhenTheUserHasNoExistingRequest() (gas: 522650) +WorkflowRegistry_allowlistRequest:test_allowlistRequest_WhenTheUserIsNotLinked() (gas: 34687) +WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenActivationWouldExceedCallersPer_DONCap() (gas: 1154691) +WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenAllListedWorkflowsAreAlreadyACTIVE() (gas: 1064139) +WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenAtLeastOneWorkflowIdIsNotOwnedByCaller() (gas: 897895) WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenCallerIsNOTALinkedOwner() (gas: 19509) WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenDONFamilyHasNoGlobalLimitSet() (gas: 563651) WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenEveryWorkflowIdIsUnknown() (gas: 156240) -WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenListMixesACTIVEAndPAUSEDWorkflowsWhereTheOnesToActivateAreWithinCap() (gas: 1794742) +WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenListMixesACTIVEAndPAUSEDWorkflowsWhereTheOnesToActivateAreWithinCap() (gas: 1794952) WorkflowRegistry_batchActivateWorkflows:test_batchActivateWorkflows_WhenWorkflowIdsLengthIs0() (gas: 148723) WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenCallerIsNOTALinkedOwner() (gas: 17562) -WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenEveryListedWorkflowIsACTIVE() (gas: 1441304) -WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenEveryListedWorkflowIsAlreadyPAUSED() (gas: 1161390) -WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenTheListMixesPAUSEDAndACTIVEWorkflows() (gas: 1281740) -WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenWorkflowIdsContainsAnIDNotOwnedByCaller() (gas: 897880) +WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenEveryListedWorkflowIsACTIVE() (gas: 1441472) +WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenEveryListedWorkflowIsAlreadyPAUSED() (gas: 1161511) +WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenTheListMixesPAUSEDAndACTIVEWorkflows() (gas: 1281861) +WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenWorkflowIdsContainsAnIDNotOwnedByCaller() (gas: 897912) WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenWorkflowIdsContainsAnUnknownID() (gas: 153907) WorkflowRegistry_batchPauseWorkflows:test_batchPauseWorkflows_WhenWorkflowIdsLengthIs0() (gas: 146907) WorkflowRegistry_canLinkOwner:test_canLinkOwner_WhenBlockTimestampIsGreaterThanValidityTimestamp() (gas: 25064) @@ -112,7 +113,7 @@ WorkflowRegistry_canLinkOwner:test_canLinkOwner_WhenProofHasAlreadyBeenUsed() (g WorkflowRegistry_canLinkOwner:test_canLinkOwner_WhenSignatureIsValidAndSignerIsAllowed() (gas: 34710) WorkflowRegistry_canLinkOwner:test_canLinkOwner_WhenSignatureRecoversToASignerNotInAllowedSigners() (gas: 33715) WorkflowRegistry_canLinkOwner:test_canLinkOwner_WhenSignatureRecoveryFails() (gas: 22685) -WorkflowRegistry_canUnlinkOwner:test_canUnlinkOwner_WhenOwnerHasExistingWorkflows() (gas: 3955808) +WorkflowRegistry_canUnlinkOwner:test_canUnlinkOwner_WhenOwnerHasExistingWorkflows() (gas: 3955840) WorkflowRegistry_canUnlinkOwner:test_canUnlinkOwner_WhenOwnerIsNotYetLinked() (gas: 31272) WorkflowRegistry_canUnlinkOwner:test_canUnlinkOwner_WhenTheSignatureDoesNotRecoverAnAllowedSigner() (gas: 159755) WorkflowRegistry_canUnlinkOwner:test_canUnlinkOwner_WhenTheSignatureRecoversAnAllowedSigner() (gas: 153496) @@ -128,17 +129,17 @@ WorkflowRegistry_getAllAuthorizedAddresses:test_WhenTheSetOfAuthorizedAddressesI WorkflowRegistry_getAllAuthorizedAddresses:test_WhenThereAreMultipleAuthorizedAddresses() (gas: 78265) WorkflowRegistry_getAllAuthorizedAddresses:test_WhenThereIsASingleAuthorizedAddress() (gas: 16834) WorkflowRegistry_getAllowlistedRequests:test_getAllowlistedRequests_WhenNoRequestsAreAllowlisted() (gas: 14419) -WorkflowRegistry_getAllowlistedRequests:test_getAllowlistedRequests_WhenNoneOfTheRequestsHaveExpired() (gas: 867606) -WorkflowRegistry_getAllowlistedRequests:test_getAllowlistedRequests_WhenSomeOfTheRequestsHaveExpired() (gas: 843104) +WorkflowRegistry_getAllowlistedRequests:test_getAllowlistedRequests_WhenNoneOfTheRequestsHaveExpired() (gas: 869124) +WorkflowRegistry_getAllowlistedRequests:test_getAllowlistedRequests_WhenSomeOfTheRequestsHaveExpired() (gas: 844622) WorkflowRegistry_getCapabilitiesRegistry:test_getCapabilitiesRegistry_WhenTheRegistryHasBeenSet() (gas: 41163) WorkflowRegistry_getCapabilitiesRegistry:test_getCapabilitiesRegistry_WhenTheRegistryHasnNotBeenSetYet() (gas: 11557) -WorkflowRegistry_getDonConfigs:test_getDonConfigs_WhenThereAreDONConfigsSet() (gas: 629341) +WorkflowRegistry_getDonConfigs:test_getDonConfigs_WhenThereAreDONConfigsSet() (gas: 629437) WorkflowRegistry_getDonConfigs:test_getDonConfigs_WhenThereAreNoDONConfigs() (gas: 11624) -WorkflowRegistry_getEvents:test_getEvents_When0IsLessThanLimitWhichIsLessThanNMinusStart() (gas: 442899) -WorkflowRegistry_getEvents:test_getEvents_WhenLimitIs0() (gas: 437491) -WorkflowRegistry_getEvents:test_getEvents_WhenLimitIsGreaterThanNMinusStart() (gas: 443248) +WorkflowRegistry_getEvents:test_getEvents_When0IsLessThanLimitWhichIsLessThanNMinusStart() (gas: 443067) +WorkflowRegistry_getEvents:test_getEvents_WhenLimitIs0() (gas: 437659) +WorkflowRegistry_getEvents:test_getEvents_WhenLimitIsGreaterThanNMinusStart() (gas: 443416) WorkflowRegistry_getEvents:test_getEvents_WhenNoEventsHaveBeenRecorded() (gas: 11725) -WorkflowRegistry_getEvents:test_getEvents_WhenStartIsGreaterThanNumberOfEvents() (gas: 437264) +WorkflowRegistry_getEvents:test_getEvents_WhenStartIsGreaterThanNumberOfEvents() (gas: 437432) WorkflowRegistry_getLinkedOwners:test_getLinkedOwners_GivenThatBatchSizeIsEqualToTotalLinkedOwners() (gas: 569378) WorkflowRegistry_getLinkedOwners:test_getLinkedOwners_GivenThatBatchSizeIsGreaterThanTotalLinkedOwners() (gas: 569379) WorkflowRegistry_getLinkedOwners:test_getLinkedOwners_GivenThatBatchSizeIsLessThanTotalLinkedOwners() (gas: 568948) @@ -149,21 +150,21 @@ WorkflowRegistry_getLinkedOwners:test_getLinkedOwners_WhenBatchSizeIsGreaterThan WorkflowRegistry_getLinkedOwners:test_getLinkedOwners_WhenBatchSizeIsLessThanTotalLinkedOwners() (gas: 572081) WorkflowRegistry_getLinkedOwners:test_getLinkedOwners_WhenThereAreNoLinkedOwners() (gas: 16605) WorkflowRegistry_getMaxWorkflowsPerDON:test_getMaxWorkflowsPerDON_WhenDonLabelHasNeverBeenConfigured() (gas: 14725) -WorkflowRegistry_getMaxWorkflowsPerDON:test_getMaxWorkflowsPerDON_WhenDonLabelWasConfiguredToLimit() (gas: 246306) -WorkflowRegistry_getMaxWorkflowsPerUserDON:test_getMaxWorkflowsPerUserDON_WhenAUserOverrideExistsAndIsEnabled() (gas: 347124) -WorkflowRegistry_getMaxWorkflowsPerUserDON:test_getMaxWorkflowsPerUserDON_WhenGlobalDONLimitIsSetToL() (gas: 250372) +WorkflowRegistry_getMaxWorkflowsPerDON:test_getMaxWorkflowsPerDON_WhenDonLabelWasConfiguredToLimit() (gas: 246338) +WorkflowRegistry_getMaxWorkflowsPerUserDON:test_getMaxWorkflowsPerUserDON_WhenAUserOverrideExistsAndIsEnabled() (gas: 347156) +WorkflowRegistry_getMaxWorkflowsPerUserDON:test_getMaxWorkflowsPerUserDON_WhenGlobalDONLimitIsSetToL() (gas: 250404) WorkflowRegistry_getMaxWorkflowsPerUserDON:test_getMaxWorkflowsPerUserDON_WhenGlobalDONLimitIsUnset() (gas: 18716) WorkflowRegistry_getUserDONOverrides:test_getUserDONOverrides_WhenThereAreNoUserOverridesForASpecificDON() (gas: 14608) -WorkflowRegistry_getUserDONOverrides:test_getUserDONOverrides_WhenThereAreUserOverridesForASpecificDON() (gas: 916768) +WorkflowRegistry_getUserDONOverrides:test_getUserDONOverrides_WhenThereAreUserOverridesForASpecificDON() (gas: 916864) WorkflowRegistry_getWorkflow:test_getWorkflow_WhenTheWorkflowDoesNotExist() (gas: 32500) -WorkflowRegistry_getWorkflow:test_getWorkflow_WhenTheWorkflowExistsWithTheOwnerAndNameAndTag() (gas: 1079147) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_ShouldIncludeBothActiveAndPausedWorkflows() (gas: 1430695) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_ShouldOnlyReturnWorkflowsFromSpecifiedDON() (gas: 3319931) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_ShouldReturnWorkflowsWithCorrectStatus() (gas: 3283488) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenLimitIsGreaterThanOrEqualToTotalMinusStart() (gas: 3387052) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenLimitIsLessThanTotalMinusStart() (gas: 3291320) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenLimitIsZero() (gas: 3224618) -WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenStartIsGreaterThanOrEqualToTotalWorkflows() (gas: 3227925) +WorkflowRegistry_getWorkflow:test_getWorkflow_WhenTheWorkflowExistsWithTheOwnerAndNameAndTag() (gas: 1079179) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_ShouldIncludeBothActiveAndPausedWorkflows() (gas: 1430727) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_ShouldOnlyReturnWorkflowsFromSpecifiedDON() (gas: 3319995) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_ShouldReturnWorkflowsWithCorrectStatus() (gas: 3283552) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenLimitIsGreaterThanOrEqualToTotalMinusStart() (gas: 3387116) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenLimitIsLessThanTotalMinusStart() (gas: 3291384) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenLimitIsZero() (gas: 3224682) +WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenStartIsGreaterThanOrEqualToTotalWorkflows() (gas: 3227989) WorkflowRegistry_getWorkflowListByDON:test_getWorkflowListByDON_WhenTheDONFamilyHasNoWorkflowsRegistered() (gas: 22474) WorkflowRegistry_getWorkflowMetadata:test_WhenTheRegistryIsLocked() (gas: 541527) WorkflowRegistry_getWorkflowMetadata:test_WhenTheWorkflowDoesNotExist() (gas: 17525) @@ -188,8 +189,8 @@ WorkflowRegistry_isAllowedSigner:test_isAllowedSigner_WhenTheSignerAddressHasNev WorkflowRegistry_isAllowedSigner:test_isAllowedSigner_WhenTheSignerIsConfigured() (gas: 13569) WorkflowRegistry_isOwnerLinked:test_isOwnerLinked_WhenTheSpecifiedOwnerHasNotLinked() (gas: 12708) WorkflowRegistry_isOwnerLinked:test_isOwnerLinked_WhenTheSpecifiedOwnerIsLinked() (gas: 145039) -WorkflowRegistry_limitsScenario:test_limitsScenario_whenGlobalLimitEqualsSumOfPerUserLimits() (gas: 7018071) -WorkflowRegistry_limitsScenario:test_limitsScenario_whenGlobalLimitLowerThanSumOfPerUserLimits() (gas: 6295591) +WorkflowRegistry_limitsScenario:test_limitsScenario_whenGlobalLimitEqualsSumOfPerUserLimits() (gas: 7018281) +WorkflowRegistry_limitsScenario:test_limitsScenario_whenGlobalLimitLowerThanSumOfPerUserLimits() (gas: 6295801) WorkflowRegistry_linkOwner:test_WhenTheProofWasPreviouslyUsed() (gas: 144553) WorkflowRegistry_linkOwner:test_linkOwner_WhenProofIsValid() (gas: 148167) WorkflowRegistry_linkOwner:test_linkOwner_WhenTheProofContainsInvalidData() (gas: 39985) @@ -205,9 +206,9 @@ WorkflowRegistry_pauseWorkflow:test_WhenTheDonIDIsNotAllowed_AndTheCallerIsAnAut WorkflowRegistry_pauseWorkflow:test_WhenTheDonIDIsNotAllowed_AndTheCallerIsAnUnauthorizedAddress() (gas: 529210) WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenCallerIsNotLinkedAsAnOwner() (gas: 16571) WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenNoWorkflowExistsForTheGivenWorkflowId() (gas: 153349) -WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenTheWorkflowExistsButOwnerIsNotCaller() (gas: 1165497) -WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenTheWorkflowExistsOwnerMatchesAndStatusIsACTIVE() (gas: 929280) -WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenTheWorkflowExistsOwnerMatchesButStatusIsPAUSED() (gas: 793547) +WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenTheWorkflowExistsButOwnerIsNotCaller() (gas: 1165529) +WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenTheWorkflowExistsOwnerMatchesAndStatusIsACTIVE() (gas: 929376) +WorkflowRegistry_pauseWorkflow:test_pauseWorkflow_WhenTheWorkflowExistsOwnerMatchesButStatusIsPAUSED() (gas: 793579) WorkflowRegistry_registerWorkflow:test_WhenTheWorkflowInputsAreAllValid() (gas: 571865) WorkflowRegistry_requestForceUpdateSecrets:test_WhenTheCallerIsAnAuthorizedAddress_AndTheWorkflowIsInAnAllowedDON() (gas: 935814) WorkflowRegistry_requestForceUpdateSecrets:test_WhenTheCallerIsAnAuthorizedAddress_AndTheWorkflowIsNotInAnAllowedDON() (gas: 510686) @@ -220,25 +221,25 @@ WorkflowRegistry_setConfig:test_setConfig_WhenAllConfigFieldsAreZero() (gas: 528 WorkflowRegistry_setConfig:test_setConfig_WhenConfigFieldsAreNon_zero() (gas: 38325) WorkflowRegistry_setConfig:test_setConfig_WhenSomeConfigFieldsAreZero() (gas: 38253) WorkflowRegistry_setConfig:test_setConfig_WhenTheCallerIsNOTTheContractOwner() (gas: 14535) -WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNewLimitDoesNotEqualExistingLimit() (gas: 361158) -WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNewLimitIsEqualToExistingLimit() (gas: 256434) -WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNoPreviousLimitExistsForDonLabel() (gas: 254692) -WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNooPreviousLimitExistsForDonLabel() (gas: 34757) -WorkflowRegistry_setDONLimit:test_setDONLimit_WhenPreviousLimitExistsForDonLabel() (gas: 317496) +WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNewLimitDoesNotEqualExistingLimit() (gas: 361261) +WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNewLimitIsEqualToExistingLimit() (gas: 256469) +WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNoPreviousLimitExistsForDonLabel() (gas: 254724) +WorkflowRegistry_setDONLimit:test_setDONLimit_WhenNooPreviousLimitExistsForDonLabel() (gas: 34763) +WorkflowRegistry_setDONLimit:test_setDONLimit_WhenPreviousLimitExistsForDonLabel() (gas: 317596) WorkflowRegistry_setDONLimit:test_setDONLimit_WhenTheCallerIsNOTTheContractOwner() (gas: 16990) -WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenAPriorOverrideExistsForUserDonLabel() (gas: 283791) +WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenAPriorOverrideExistsForUserDonLabel() (gas: 283816) WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenGlobalDONLimitIsNotSet() (gas: 22393) -WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenLimitIsGreaterThanGlobalDONLimit() (gas: 249203) -WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNewLimitDoesNotEqualExistingOverrideValue() (gas: 359534) -WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNewLimitIsEqualToExistingOverrideValue() (gas: 346035) -WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNoPriorOverrideExists() (gas: 261028) -WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNoPriorOverrideExistsForUserDonLabel() (gas: 346715) +WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenLimitIsGreaterThanGlobalDONLimit() (gas: 249235) +WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNewLimitDoesNotEqualExistingOverrideValue() (gas: 359566) +WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNewLimitIsEqualToExistingOverrideValue() (gas: 346067) +WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNoPriorOverrideExists() (gas: 261060) +WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenNoPriorOverrideExistsForUserDonLabel() (gas: 346747) WorkflowRegistry_setUserDONOverride:test_setUserDONOverride_WhenTheCallerIsNOTTheContractOwner() (gas: 17233) WorkflowRegistry_setWorkflowOwnerConfig:test_setWorkflowOwnerConfig_WhenSettingANonEmptyConfigForTheFirstTime() (gas: 45809) WorkflowRegistry_setWorkflowOwnerConfig:test_setWorkflowOwnerConfig_WhenSettingAnEmptyBlob() (gas: 37911) WorkflowRegistry_setWorkflowOwnerConfig:test_setWorkflowOwnerConfig_WhenTheCallerIsNOTTheContractOwner() (gas: 16777) WorkflowRegistry_setWorkflowOwnerConfig:test_setWorkflowOwnerConfig_WhenUpdatingToADifferentBlob() (gas: 53469) -WorkflowRegistry_totalEvents:test_totalEvents() (gas: 478623) +WorkflowRegistry_totalEvents:test_totalEvents() (gas: 478655) WorkflowRegistry_totalLinkedOwners:test_totalLinkedOwners() (gas: 352955) WorkflowRegistry_unlinkOwner:test_unlinkOwner_AutomaticallyDeletesWorkflowsWhenCallerIsNotOwner() (gas: 3117753) WorkflowRegistry_unlinkOwner:test_unlinkOwner_AutomaticallyDeletesWorkflowsWhenOwnerIsLinked() (gas: 3116488) @@ -268,21 +269,21 @@ WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenAttributesLengthGreaterT WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenBinaryUrlIsMissing() (gas: 166426) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenBinaryUrlLengthGreaterThanAllowed() (gas: 189381) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenConfigUrlLengthGreaterThanAllowed() (gas: 189294) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenKeepAliveIsTrue() (gas: 1884991) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenKeepAliveIsTrue() (gas: 1885023) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenMsgSenderNotALinkedOwner() (gas: 32520) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewAttributesLengthGreaterThanAllowed() (gas: 1234684) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewBinaryUrlIsMissing() (gas: 1067286) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewBinaryUrlOrNewConfigUrlLengthGreaterThanAllowed() (gas: 1090174) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewWorkflowIdAlreadyExists() (gas: 1065706) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewWorkflowIdIsZero() (gas: 1065127) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenOwnerWouldExceedTheirEffectiveCap() (gas: 2428005) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewAttributesLengthGreaterThanAllowed() (gas: 1234716) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewBinaryUrlIsMissing() (gas: 1067318) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewBinaryUrlOrNewConfigUrlLengthGreaterThanAllowed() (gas: 1090206) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewWorkflowIdAlreadyExists() (gas: 1065738) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenNewWorkflowIdIsZero() (gas: 1065159) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenOwnerWouldExceedTheirEffectiveCap() (gas: 2428173) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenTagLengthGreaterThanAllowed() (gas: 180616) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenTagLengthIsZero() (gas: 166798) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenTheDonHasNoGlobalCapSet() (gas: 178743) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreMoreThanOneActiveWorkflowThatSharesTheKey() (gas: 1864957) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreNoActiveWorkflowsWithTheSameKey() (gas: 1950613) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreNoFailures() (gas: 1063603) -WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreNoValidationFailures() (gas: 1090943) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreMoreThanOneActiveWorkflowThatSharesTheKey() (gas: 1865078) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreNoActiveWorkflowsWithTheSameKey() (gas: 1950645) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreNoFailures() (gas: 1063635) +WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenThereAreNoValidationFailures() (gas: 1090975) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenWorkflowIdAlreadyExists() (gas: 562827) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenWorkflowIdIsZero() (gas: 162409) WorkflowRegistry_upsertWorkflow:test_upsertWorkflow_WhenWorkflowNameLengthGreaterThanAllowed() (gas: 180724) diff --git a/contracts/src/v0.8/workflow/dev/v2/WorkflowRegistry.sol b/contracts/src/v0.8/workflow/dev/v2/WorkflowRegistry.sol index d8e2515bb8..589f302cc1 100644 --- a/contracts/src/v0.8/workflow/dev/v2/WorkflowRegistry.sol +++ b/contracts/src/v0.8/workflow/dev/v2/WorkflowRegistry.sol @@ -89,10 +89,14 @@ contract WorkflowRegistry is Ownable2StepMsgSender, ITypeAndVersion { /// When a workflow is paused it is removed from the don family. mapping(bytes32 rid => bytes32 donHash) private s_donByWorkflowRid; - /// @dev Tracking allowlisted requests for the owner address, required to enable anyone to verify off-chain requests. - mapping(bytes32 ownerDigestHash => uint32 expiryTimestamp) private s_requestsAllowlist; - /// @dev Storing allowlisted requests for all owners, enabling fetching all non-expired requests - OwnerAllowlistedRequest[] private s_requestAllowlistArray; + /// @dev Fast lookup for allowlisted requests. Key is hash of owner + request digest, value is + /// index in the s_allowlistedRequestsData array pushed by one. Pushing index by one avoids collisions between an + /// entry at the zero index and entry that doesn't exist. + /// This is used for tracking allowlisted requests for the owner address, required to enable anyone to verify + /// off-chain requests. + mapping(bytes32 => uint256) private s_allowlistedRequestsIndexMap; + /// @dev Array storing all allowlisted request data for enumeration and pagination. + OwnerAllowlistedRequest[] private s_allowlistedRequestsData; /// @dev Map each owner address to their arbitrary config. Can be used to control billing parameters or any other data /// per owner mapping(address owner => bytes config) private s_ownerConfig; @@ -204,7 +208,8 @@ contract WorkflowRegistry is Ownable2StepMsgSender, ITypeAndVersion { uint8 maxTagLen; // Cap for `tag` (0 ➜ unlimited) uint8 maxUrlLen; // Cap for each URL (0 ➜ unlimited) uint16 maxAttrLen; // Cap for `attributes` (0 ➜ unlimited) - uint32 maxExpiryLen; // Cap for every allowlisted request expiration timestamp (0 ➜ unlimited) + uint32 maxExpiryLen; // Maximum window in seconds from now (0 ⇒ never expires) for every allowlisted request + // expiration timestamp. } /// @dev Struct for WorkflowMetadata. This is used to store the workflow metadata. @@ -1299,10 +1304,23 @@ contract WorkflowRegistry is Ownable2StepMsgSender, ITypeAndVersion { } if (!s_linkedOwners.contains(msg.sender)) revert OwnershipLinkDoesNotExist(msg.sender); - s_requestsAllowlist[keccak256(abi.encode(msg.sender, requestDigest))] = expiryTimestamp; - s_requestAllowlistArray.push( - OwnerAllowlistedRequest({owner: msg.sender, requestDigest: requestDigest, expiryTimestamp: expiryTimestamp}) - ); + bytes32 key = keccak256(abi.encode(msg.sender, requestDigest)); + + // non-zero index means that the request digest already exists + uint256 storedIndex = s_allowlistedRequestsIndexMap[key]; + + if (storedIndex != 0) { + // index is pushed by one when stored, so we need to subtract one to get the correct index + // then update existing request digest with a new expiry timestamp + s_allowlistedRequestsData[storedIndex - 1].expiryTimestamp = expiryTimestamp; + } else { + // push index by one to avoid collisions between an entry at the zero index and entry + // that doesn't exist in the mapping + s_allowlistedRequestsIndexMap[key] = s_allowlistedRequestsData.length + 1; + s_allowlistedRequestsData.push( + OwnerAllowlistedRequest({owner: msg.sender, requestDigest: requestDigest, expiryTimestamp: expiryTimestamp}) + ); + } emit RequestAllowlisted(msg.sender, requestDigest, expiryTimestamp); } @@ -1313,14 +1331,28 @@ contract WorkflowRegistry is Ownable2StepMsgSender, ITypeAndVersion { /// @param requestDigest Unique identifier for the request (hash of the request payload). /// @return bool True if the request is allowlisted and not expired, false otherwise. function isRequestAllowlisted(address owner, bytes32 requestDigest) external view returns (bool) { - return s_requestsAllowlist[keccak256(abi.encode(owner, requestDigest))] > block.timestamp; - } - + bytes32 key = keccak256(abi.encode(owner, requestDigest)); + uint256 storedIndex = s_allowlistedRequestsIndexMap[key]; + if (storedIndex == 0) return false; // zero index indicates that request is not found + // index is pushed by one when stored, so we need to subtract one to get the correct index + OwnerAllowlistedRequest storage request = s_allowlistedRequestsData[storedIndex - 1]; + return request.expiryTimestamp > block.timestamp; + } + + /// @notice Returns a paginated list of allowlisted requests across all owners. + /// @dev - Reads a slice of the allowlisted requests starting at `start` and spanning up to `limit` elements. + /// - Expired entries (where `expiryTimestamp <= block.timestamp`) are filtered out. + /// - The returned array may therefore be shorter than `limit`. + /// - Does not revert on out-of-range pagination: if `start >= total`, returns an empty array. + /// @param start Zero-based index into the allowlist at which to begin. + /// @param limit Maximum number of entries to return from `start`. + /// @return allowlistedRequests Array of {requestDigest, owner, expiryTimestamp} structs + /// for all non-expired requests found in the page slice. function getAllowlistedRequests( uint256 start, uint256 limit ) external view returns (OwnerAllowlistedRequest[] memory allowlistedRequests) { - uint256 total = s_requestAllowlistArray.length; + uint256 total = s_allowlistedRequestsData.length; uint256 pageCount = _getPageCount(total, start, limit); if (pageCount == 0) return new OwnerAllowlistedRequest[](0); @@ -1328,7 +1360,7 @@ contract WorkflowRegistry is Ownable2StepMsgSender, ITypeAndVersion { allowlistedRequests = new OwnerAllowlistedRequest[](pageCount); uint256 addedCount = 0; for (uint256 i = 0; i < pageCount; ++i) { - OwnerAllowlistedRequest storage request = s_requestAllowlistArray[start + i]; + OwnerAllowlistedRequest storage request = s_allowlistedRequestsData[start + i]; if (request.expiryTimestamp > block.timestamp) { allowlistedRequests[addedCount] = request; ++addedCount; @@ -1346,8 +1378,12 @@ contract WorkflowRegistry is Ownable2StepMsgSender, ITypeAndVersion { return allowlistedRequests; } + /// @notice Returns the total number of allowlisted requests across all owners. + /// @dev Use this in tandem with `getAllowlistedRequests(start, limit)` to + /// page through the allowlisted requests. + /// @return The total count of allowlisted requests stored. function totalAllowlistedRequests() external view returns (uint256) { - return s_requestAllowlistArray.length; + return s_allowlistedRequestsData.length; } // ================================================================ diff --git a/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.t.sol b/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.t.sol index 72c1e94335..51c5eac3ec 100644 --- a/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.t.sol +++ b/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.t.sol @@ -45,8 +45,91 @@ contract WorkflowRegistry_allowlistRequest is WorkflowRegistrySetup { s_registry.allowlistRequest(requestDigest, expiryTimestamp); } - function test_allowlistRequest_WhenTheUserIsLinked() external { - //it should allowlist the request digest + // When the user is linked + function test_allowlistRequest_WhenTheUserAlreadyHasARequest() external { + // It should update the existing request in-place without growing the array + bytes32 requestDigest = keccak256("duplicate-test-request"); + uint32 initialExpiry = uint32(block.timestamp + 1 hours); + uint32 updatedExpiry = uint32(block.timestamp + 2 hours); + + // Link the owner first + _linkOwner(s_user); + + // Initial allowlist + vm.expectEmit(true, true, true, false); + emit WorkflowRegistry.RequestAllowlisted(s_user, requestDigest, initialExpiry); + vm.prank(s_user); + s_registry.allowlistRequest(requestDigest, initialExpiry); + + // Verify the request is allowlisted with initial expiry + assertTrue(s_registry.isRequestAllowlisted(s_user, requestDigest), "Request should be allowlisted"); + assertEq(s_registry.totalAllowlistedRequests(), 1, "Should have exactly 1 request in storage"); + + // Get the request details to verify initial expiry + WorkflowRegistry.OwnerAllowlistedRequest[] memory requests = s_registry.getAllowlistedRequests(0, 10); + assertEq(requests.length, 1, "Should return exactly 1 request"); + assertEq(requests[0].expiryTimestamp, initialExpiry, "Initial expiry should match"); + assertEq(requests[0].owner, s_user, "Owner should match"); + assertEq(requests[0].requestDigest, requestDigest, "Request digest should match"); + + // Update the same request with new expiry (this should update in-place, not add new entry) + vm.expectEmit(true, true, true, false); + emit WorkflowRegistry.RequestAllowlisted(s_user, requestDigest, updatedExpiry); + vm.prank(s_user); + s_registry.allowlistRequest(requestDigest, updatedExpiry); + + // Verify the request is still allowlisted but with updated expiry + assertTrue(s_registry.isRequestAllowlisted(s_user, requestDigest), "Request should still be allowlisted"); + assertEq(s_registry.totalAllowlistedRequests(), 1, "Should still have exactly 1 request in storage (no duplicates)"); + + // Get the updated request details + requests = s_registry.getAllowlistedRequests(0, 10); + assertEq(requests.length, 1, "Should still return exactly 1 request"); + assertEq(requests[0].expiryTimestamp, updatedExpiry, "Expiry should be updated"); + assertEq(requests[0].owner, s_user, "Owner should still match"); + assertEq(requests[0].requestDigest, requestDigest, "Request digest should still match"); + + // Add multiple different requests to verify they are stored separately + bytes32 requestDigest2 = keccak256("different-request-1"); + bytes32 requestDigest3 = keccak256("different-request-2"); + uint32 expiry2 = uint32(block.timestamp + 3 hours); + uint32 expiry3 = uint32(block.timestamp + 4 hours); + + vm.prank(s_user); + s_registry.allowlistRequest(requestDigest2, expiry2); + vm.prank(s_user); + s_registry.allowlistRequest(requestDigest3, expiry3); + + // Verify all 3 unique requests are stored + assertEq(s_registry.totalAllowlistedRequests(), 3, "Should have exactly 3 unique requests"); + requests = s_registry.getAllowlistedRequests(0, 10); + assertEq(requests.length, 3, "Should return exactly 3 requests"); + + // Update the second request and verify no duplicates + uint32 newExpiry2 = uint32(block.timestamp + 5 hours); + vm.prank(s_user); + s_registry.allowlistRequest(requestDigest2, newExpiry2); + + // Should still have exactly 3 unique requests + assertEq(s_registry.totalAllowlistedRequests(), 3, "Should still have exactly 3 unique requests"); + requests = s_registry.getAllowlistedRequests(0, 10); + assertEq(requests.length, 3, "Should still return exactly 3 requests"); + + // Find and verify the updated request + bool foundUpdatedRequest = false; + for (uint256 i = 0; i < requests.length; i++) { + if (requests[i].requestDigest == requestDigest2) { + assertEq(requests[i].expiryTimestamp, newExpiry2, "Second request expiry should be updated"); + foundUpdatedRequest = true; + break; + } + } + assertTrue(foundUpdatedRequest, "Should find the updated second request"); + } + + // When the user is linked + function test_allowlistRequest_WhenTheUserHasNoExistingRequest() external { + // It should allowlist the request digest with a new one bytes32 requestDigest = keccak256("request-digest"); uint32 expiryTimestamp = uint32(block.timestamp + 1 hours); diff --git a/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.tree b/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.tree index 863c63ccfb..e5d653bcde 100644 --- a/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.tree +++ b/contracts/src/v0.8/workflow/dev/v2/test/WorkflowRegistry/WorkflowRegistry.allowlistRequest.tree @@ -2,4 +2,7 @@ WorkflowRegistry.allowlistRequest ├── when the user is not linked │ └── it should revert with OwnershipLinkDoesNotExist └── when the user is linked - └── it should allowlist the request digest + ├── when the user already has a request + │ └── it should allowlist the request digest by replacing the existing one + └── when the user has no existing request + └── it should allowlist the request digest with a new one diff --git a/gethwrappers/workflow/generated/workflow_registry_wrapper_v2/workflow_registry_wrapper_v2.go b/gethwrappers/workflow/generated/workflow_registry_wrapper_v2/workflow_registry_wrapper_v2.go index 64f67dfb7c..3246fce66d 100644 --- a/gethwrappers/workflow/generated/workflow_registry_wrapper_v2/workflow_registry_wrapper_v2.go +++ b/gethwrappers/workflow/generated/workflow_registry_wrapper_v2/workflow_registry_wrapper_v2.go @@ -77,7 +77,7 @@ type WorkflowRegistryWorkflowMetadataView struct { var WorkflowRegistryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"activateWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminBatchPauseWorkflows\",\"inputs\":[{\"name\":\"workflowIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminPauseAllByDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminPauseAllByOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminPauseWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowlistRequest\",\"inputs\":[{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchActivateWorkflows\",\"inputs\":[{\"name\":\"workflowIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchPauseWorkflows\",\"inputs\":[{\"name\":\"workflowIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canLinkOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canUnlinkOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAllowlistedRequests\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"allowlistedRequests\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.OwnerAllowlistedRequest[]\",\"components\":[{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCapabilitiesRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structWorkflowRegistry.Config\",\"components\":[{\"name\":\"maxNameLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxTagLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxUrlLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAttrLen\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxExpiryLen\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDonConfigs\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.DonConfigView[]\",\"components\":[{\"name\":\"donHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"family\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"limit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"limitEnabled\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEvents\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.EventRecord[]\",\"components\":[{\"name\":\"eventType\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.EventType\"},{\"name\":\"timestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLinkedOwners\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"owners\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxWorkflowsPerDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"maxWorkflows\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxWorkflowsPerUserDON\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserDONOverrides\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.UserOverrideView[]\",\"components\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"limit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflow\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"workflow\",\"type\":\"tuple\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowById\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"workflow\",\"type\":\"tuple\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowListByDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView[]\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowListByOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView[]\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowListByOwnerAndName\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView[]\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowOwnerConfig\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAllowedSigner\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOwnerLinked\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRequestAllowlisted\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"linkOwner\",\"inputs\":[{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauseWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCapabilitiesRegistry\",\"inputs\":[{\"name\":\"registry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainSelector\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConfig\",\"inputs\":[{\"name\":\"nameLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"tagLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"urlLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"attrLen\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"expiryLen\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDONLimit\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"limit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"enabled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setUserDONOverride\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"limit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"enabled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWorkflowOwnerConfig\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"config\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalActiveWorkflowsByOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalActiveWorkflowsOnDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalAllowlistedRequests\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalEvents\",\"inputs\":[],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalLinkedOwners\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"typeAndVersion\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unlinkOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAllowedSigners\",\"inputs\":[{\"name\":\"signers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"allowed\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateWorkflowDONFamily\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"newDonFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upsertWorkflow\",\"inputs\":[{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"keepAlive\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AllowedSignersUpdated\",\"inputs\":[{\"name\":\"signers\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"},{\"name\":\"allowed\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CapabilitiesRegistryUpdated\",\"inputs\":[{\"name\":\"oldAddr\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddr\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"oldChainSelector\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newChainSelector\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfigUpdated\",\"inputs\":[{\"name\":\"maxNameLen\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"maxTagLen\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"maxUrlLen\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"maxAttrLen\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"maxExpiryLen\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DONLimitSet\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"limit\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipLinkUpdated\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"added\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferRequested\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RequestAllowlisted\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UserDONLimitSet\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"limit\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UserDONLimitUnset\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowActivated\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowDeleted\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowDonFamilyUpdated\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldDonFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"newDonFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowOwnerConfigUpdated\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"config\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowPaused\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowRegistered\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowUpdated\",\"inputs\":[{\"name\":\"oldWorkflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newWorkflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AttributesTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BinaryURLRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotWorkflowOwner\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CannotTransferToSelf\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotUpdateDONFamilyForPausedWorkflows\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DonLimitNotSet\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"EmptyUpdateBatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnumerableMapNonexistentKey\",\"inputs\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidExpiryTimestamp\",\"inputs\":[{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxAllowed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidOwnershipLink\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"recoverErrorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"recoverErrorArg\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"LinkOwnerRequestExpired\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"currentTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"MaxWorkflowsPerUserDONExceeded\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"MustBeProposedOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyCallableByOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnerCannotBeZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnershipLinkAlreadyExists\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnershipLinkDoesNotExist\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnershipProofAlreadyUsed\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"URLTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"UnlinkOwnerRequestExpired\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"currentTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"UserDONOverrideExceedsDONLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowIDAlreadyExists\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WorkflowNameRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowNameTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"WorkflowTagRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowTagTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"ZeroAddressNotAllowed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroWorkflowIDNotAllowed\",\"inputs\":[]}]", - Bin: "0x60803460a8573315609757600180546001600160a01b0319163317905560a081016001600160401b03811182821017608157604090815280825260208083015260c882820152610400606083015262093a80608090920191909152600280546001600160481b03191667093a800400c820401790555161515f90816100ae8239f35b634e487b7160e01b600052604160045260246000fd5b639b15e16f60e01b60005260046000fd5b600080fdfe610140604052600436101561001357600080fd5b60003560e01c806301b7690514612c675780630987294c14612c2357806317e0edfc14612b17578063181f5a7714612afb5780631c08b00a14612a2c5780631c71682c14612829578063245b8e4e146127eb578063274e00e01461278d578063289bd108146126c15780632afc4130146126695780632c50a9551461260c57806335141251146125b557806339d68c6a1461245057806339e43234146123ce5780633c17181b1461237b5780633c54b50b146123285780634b6d2e5b14612186578063530979d6146120f7578063556dbd0d146120805780636104319314611fe3578063695e134014611f9257806370ae264014611f5c57806379ba509714611ec3578063865ec9e014611e8a5780638b42a96d14611d375780638c42ffc514611c835780638da5cb5b14611c5c57806394ea0da614611a81578063952bb98414611a36578063a0b8a4fe14611a18578063a408901614611975578063a6008f2014611853578063a7d01858146117ac578063afbb240114611795578063b377bfc51461090c578063b668435f146108a4578063ba87068614610886578063bae5c29a1461080d578063bdf6b4ff146107aa578063be67433314610783578063c3f909d4146106d2578063cabb9e7a14610693578063d8b80738146105b1578063d8e4a72414610457578063dc101969146103b9578063de49b95f1461039b578063e690f33214610317578063ea32308b146102dd5763f2fde38b1461023857600080fd5b346102d85760203660031901126102d8576001600160a01b03610259612e78565b6102616145aa565b163381146102ae57806001600160a01b031960005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b346102d85760203660031901126102d8576001600160a01b036102fe612e78565b16600052600b6020526020604060002054604051908152f35b346102d85760203660031901126102d85761033f336000526005602052604060002054151590565b1561038657600435600052600a60205260406000205461035f81336147ef565b600160ff8183015460e01c1661037481612fa6565b0361037b57005b6103849161460d565b005b63c2dda3f960e01b6000523360045260246000fd5b346102d85760003660031901126102d8576020601354604051908152f35b346102d85760603660031901126102d85760443560243567ffffffffffffffff82116102d8576103fd6103f26001933690600401612f78565b908360043533613dc7565b3360005260066020528060406000205561041633614e09565b5080600052600760205260406000208260ff19825416179055337f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b35600080a4005b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d857610488903690600401613122565b602435918215158093036102d85761049e6145aa565b60ff831660005b83811061052f57505060405191806040840160408552526060830191906000905b8082106104fc577f861d38caf3055a11344d9f540d5ab4e5c38d751dfcbd1156aed92b71805e13168580868960208301520390a1005b9091928335906001600160a01b03821682036102d857602080916001600160a01b036001941681520194019201906104c6565b6001600160a01b0361054a61054583878761357c565b6143ee565b161561058757806001600160a01b03610569610545600194888861357c565b16600052600360205260406000208360ff19825416179055016104a5565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576105e2903690600401613122565b8015610669576105ff336000526005602052604060002054151590565b156103865760005b81811061061057005b8061061e600192848661357c565b35600052600a60205260406000205461063781336147ef565b8360ff8183015460e01c1661064b81612fa6565b03610659575b505001610607565b6106629161460d565b8480610651565b7faea36d000000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d8576001600160a01b036106b4612e78565b166000526003602052602060ff604060002054166040519015158152f35b346102d85760003660031901126102d857600060806040516106f381612ee2565b828152826020820152826040820152826060820152015260a060405161071881612ee2565b63ffffffff60025461ffff60ff82169384815260ff60208201818560081c168152816040840191818760101c1683528760806060870196888a60181c168852019760281c16875260405198895251166020880152511660408601525116606084015251166080820152f35b346102d857602061079c610796366131cd565b91614375565b63ffffffff60405191168152f35b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576107de6107e5913690600401612f78565b3691613319565b602081519101206000526015602052602063ffffffff60016040600020015416604051908152f35b346102d85760403660031901126102d857610826612e78565b6040516108638161085560208201946024359086602090939291936001600160a01b0360408201951681520152565b03601f198101835282612f1b565b5190206000526012602052602063ffffffff604060002054166040519042108152f35b346102d85760003660031901126102d8576020601a54604051908152f35b346102d85760803660031901126102d8576108bd612e78565b60243567ffffffffffffffff81116102d8576108dd903690600401612f78565b6044359063ffffffff821682036102d8576064359283151584036102d857610384946109076145aa565b61414f565b346102d8576101203660031901126102d85760043567ffffffffffffffff81116102d85761093e903690600401612f78565b610100526101205260243567ffffffffffffffff81116102d857610966903690600401612f78565b90600260643510156102d85760843567ffffffffffffffff81116102d857610992903690600401612f78565b9060e0529060a43567ffffffffffffffff81116102d8576109b7903690600401612f78565b9160c43567ffffffffffffffff81116102d8576109d8903690600401612f78565b9560e43567ffffffffffffffff81116102d8576109f9903690600401612f78565b929093610104359586151587036102d857610a21336000526005602052604060002054151590565b15610386576044351561176b57604435600052600a60205260406000205461173b5760025460ff8160101c16891561171157806116d4575b5061ffff8160181c16801515806116cb575b61169a575084156116705760ff8160081c1680151580611667575b6116365750610100511561160c5760ff1680151580611600575b6115cc57506040516020810190610ac581610855888761010051610120513389613fd8565b5190209788600052600860205260406000206001600160a01b03600182015416801560001461124a575050610b0a610b04366101005161012051613319565b3361445d565b9a610b18368c60e051613319565b6020815191012098156111be575b610b31606435612fa6565b60643515611196575b604051978861012081011067ffffffffffffffff6101208b011117610fbf57610be7899695610bd88897610bf6956101208a016040526044358a5260a0610bcc60208c019a338c5260408d0160c05267ffffffffffffffff421660c0515260608d019a610ba8606435612fa6565b6064358c526080610bc0366101005161012051613319565b9e019d8e523691613319565b9b019a8b523691613319565b9860c08c01998a523691613319565b9760e08a019889523691613319565b610100880160a05260a051528860005260086020526040600020965187556001600160a01b038060018901935116166001600160a01b031983541617825560c051517fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b8085549360a01b1616911617825551610c7d81612fa6565b610c8681612fa6565b60ff60e01b197cff0000000000000000000000000000000000000000000000000000000083549260e01b16911617905560028501905180519067ffffffffffffffff8211610fbf57610ce282610cdc8554613232565b856137be565b602090601f831160011461112f57610d13929160009183611124575b50508160011b916000199060031b1c19161790565b90555b518051600385019167ffffffffffffffff8211610fbf57610d3b82610cdc8554613232565b602090601f83116001146110bd57610d6b9291600091836110b25750508160011b916000199060031b1c19161790565b90555b518051600484019167ffffffffffffffff8211610fbf57610d9382610cdc8554613232565b602090601f831160011461104b57610dc3929160009183610fd55750508160011b916000199060031b1c19161790565b90555b518051600583019167ffffffffffffffff8211610fbf57610deb82610cdc8554613232565b602090601f8311600114610fe0579180610e20926006969594600092610fd55750508160011b916000199060031b1c19161790565b90555b019360a0515194855167ffffffffffffffff8111610fbf57610e4f81610e498454613232565b846137be565b6020601f8211600114610f55579080610e8392610ed99899600092610f4a5750508160011b916000199060031b1c19161790565b90555b6000526009602052610e9c826040600020614eda565b50604435600052600a60205281604060002055600052600d602052610ec5816040600020614eda565b5033600052600e6020526040600020614eda565b50610ef26040519160608352606083019060e05161352f565b610efd606435612fa6565b606435602083015281810360408301527f74dc2e5bdab0a48c5e7d33c1eaad00066fd19c8d9f29d4c3a251711c0a0e9a09339280610f4560443594610100516101205161352f565b0390a3005b015190508980610cfe565b601f1982169783600052816000209860005b818110610fa7575091610ed9989991846001959410610f8e575b505050811b019055610e86565b015160001960f88460031b161c19169055888080610f81565b838301518b556001909a019960209384019301610f67565b634e487b7160e01b600052604160045260246000fd5b015190508a80610cfe565b90601f1983169184600052816000209260005b81811061103357509160019391856006989796941061101a575b505050811b019055610e23565b015160001960f88460031b161c1916905589808061100d565b92936020600181928786015181550195019301610ff3565b90601f1983169184600052816000209260005b81811061109a5750908460019594939210611081575b505050811b019055610dc6565b015160001960f88460031b161c19169055898080611074565b9293602060018192878601518155019501930161105e565b015190508b80610cfe565b90601f1983169184600052816000209260005b81811061110c57509084600195949392106110f3575b505050811b019055610d6e565b015160001960f88460031b161c191690558a80806110e6565b929360206001819287860151815501950193016110d0565b015190508c80610cfe565b90601f1983169184600052816000209260005b81811061117e5750908460019594939210611165575b505050811b019055610d16565b015160001960f88460031b161c191690558b8080611158565b92936020600181928786015181550195019301611142565b6111ad6111a6368d60e051613319565b8a3361487f565b6111b98c8a338d614c08565b610b3a565b9a999897969594939291908a600052600f60205260406000206080525b60805154801561123957806000198101116112235761120361121e9160001901608051614cac565b90549060031b1c80600052600860205260406000209061460d565b6111db565b634e487b7160e01b600052601160045260246000fd5b50909192939495969798999a610b26565b9294969850969a945097915033036115b7578454600052600a60205260006040812055604435600052600a602052604060002055835495604435855560038501916040516112a38161129c818761326c565b0382612f1b565b602081519101206112b5368484613319565b60208151910120036114f0575b50505060048301916040516112db8161129c818761326c565b602081519101206112ed368484613319565b6020815191012003611420575b5050506006019067ffffffffffffffff8111610fbf5761131e81610e498454613232565b6000601f82116001146113bc578190611350939495966000926113b15750508160011b916000199060031b1c19161790565b90555b61136b6040519260408452604084019060e05161352f565b9082820360208401527f03d454e4bcb8ae5031ab165ca5f4161ebf48cfaf66d96cc490ba500a59a1e3223393806113ac60443595610100516101205161352f565b0390a4005b013590508680610cfe565b601f198216958382526020822091805b888110611408575083600195969798106113ee575b505050811b019055611353565b0135600019600384901b60f8161c191690558580806113e1565b909260206001819286860135815501940191016113cc565b67ffffffffffffffff8211610fbf5761143d82610cdc8554613232565b600090601f831160011461148857918061147292600696959460009261147d5750508160011b916000199060031b1c19161790565b90555b9086806112fa565b013590508a80610cfe565b8382526020822091601f198416815b8181106114d85750916001939185600698979694106114be575b505050811b019055611475565b0135600019600384901b60f8161c191690558980806114b1565b91936020600181928787013581550195019201611497565b67ffffffffffffffff8211610fbf5761150d82610cdc8554613232565b600090601f83116001146115535761153d9291600091836115485750508160011b916000199060031b1c19161790565b90555b8780806112c2565b013590508b80610cfe565b8382526020822091601f198416815b81811061159f5750908460019594939210611585575b505050811b019055611540565b0135600019600384901b60f8161c191690558a8080611578565b91936020600181928787013581550195019201611562565b6331ee6dc760e01b6000523360045260246000fd5b7f36a7c503000000000000000000000000000000000000000000000000000000006000526101005160045260245260446000fd5b50806101005111610aa0565b7f485b8ed40000000000000000000000000000000000000000000000000000000060005260046000fd5b857f436f97540000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808611610a86565b7f65cf28770000000000000000000000000000000000000000000000000000000060005260046000fd5b867f354f25140000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808711610a6b565b808a116116fa57808c1115610a59578b6219aad560e31b60005260045260245260446000fd5b896219aad560e31b60005260045260245260446000fd5b7f9cd963cf0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f0d5354a40000000000000000000000000000000000000000000000000000000060005260443560045260246000fd5b7f315de7450000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d8576103846117a63661319d565b9161400d565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576117dd903690600401613122565b80156106695760005b8181106117ef57005b806117fd600192848661357c565b356118066145aa565b600052600a602052604060002054806000526008602052604060002060ff8482015460e01c1661183581612fa6565b15611843575b5050016117e6565b61184c9161460d565b848061183b565b346102d85760a03660031901126102d85760043560ff81168091036102d8576024359060ff8216908183036102d8576044359160ff8316908184036102d8576064359161ffff8316918284036102d8576084359663ffffffff8816948589036102d85764ffff00000060a09862ff00007f9c1a161a4cdd9b19a46f9660eee21b6394dc5aa70fc9e093dbb36d2c1786d7739b6118ed6145aa565b8960806040516118fc81612ee2565b8d81528960208201528a60408201528b6060820152015268ffffffff00000000006002549160281b169561ff0068ffffffff000000000019928d87199162ffffff191617169160081b1617169160101b16179160181b1617176002556040519485526020850152604084015260608301526080820152a1005b346102d85760603660031901126102d85761198e612e78565b60243567ffffffffffffffff81116102d8576119ae903690600401612f78565b916044359267ffffffffffffffff84116102d8576119f8611a00936108556119dd611a14973690600401612f78565b906119e6613360565b50604051958694602086019889613fd8565b51902061447c565b604051918291602083526020830190612fb0565b0390f35b346102d85760003660031901126102d8576020600454604051908152f35b346102d85760803660031901126102d857611a4f612e78565b6064359067ffffffffffffffff82116102d857611a73610384923690600401612f78565b916044359060243590613dc7565b346102d85760403660031901126102d857600435611a9d613153565b63ffffffff8060025460281c16911690428211801590611c40575b611c0c5750611ad4336000526005602052604060002054151590565b1561038657604080513360208201908152918101849052611af88160608101610855565b519020600052601260205260406000208163ffffffff19825416179055604051611b2181612eaa565b8281526020810190338252604081019083825260135468010000000000000000811015610fbf57806001611b5892016013556133fe565b611bf65760016001600160a01b039291839251815501935116166001600160a01b0319835416178255517fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff77ffffffff000000000000000000000000000000000000000083549260a01b1691161790556040519081527ff69135e4f80a25991d2f877c365c191c51ec3c0063ecb9299d314cd9da4880d160203392a3005b634e487b7160e01b600052600060045260246000fd5b917f7ffd3b8f0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b508015158015611ab8575080611c564284613522565b11611ab8565b346102d85760003660031901126102d85760206001600160a01b0360015416604051908152f35b346102d85760603660031901126102d857611c9c612e78565b6001600160a01b0360243591169081600052600e602052611cc560443582604060002054614402565b90611ccf826133ae565b9260005b838110611ce85760405180611a14878261307b565b60019082600052600e602052611d1b611d0f6040600020611d098488613225565b90614cac565b90549060031b1c61447c565b611d2582886132ef565b52611d3081876132ef565b5001611cd3565b346102d8576001600160a01b03611d4d366131cd565b929091611d586145aa565b169081600052601460205260406000209267ffffffffffffffff8111610fbf57611d8c81611d868654613232565b866137be565b600093601f8211600114611e0857611dde82807f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f139697600091611dfd575b508160011b916000199060031b1c19161790565b90555b611df860405192839260208452602084019161352f565b0390a2005b905085013588611dca565b80855260208520601f19831695805b878110611e725750837f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f13969710611e58575b5050600182811b019055611de1565b840135600019600385901b60f8161c191690558580611e49565b90916020600181928589013581550193019101611e17565b346102d85760003660031901126102d857604060195467ffffffffffffffff8251916001600160a01b038116835260a01c166020820152f35b346102d85760003660031901126102d8576000546001600160a01b0381163303611f32576001600160a01b0319600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d857611f75613360565b50600435600052600a602052611a14611a0060406000205461447c565b346102d85760203660031901126102d857611fba336000526005602052604060002054151590565b1561038657600435600052600a602052610384604060002054611fdd81336147ef565b90614a71565b346102d857612020612003611ff736613166565b94929093913691613319565b602081519101209283600052600d60205282604060002054614402565b9061202a826133ae565b9260005b8381106120435760405180611a14878261307b565b60019082600052600d602052612064611d0f6040600020611d098488613225565b61206e82886132ef565b5261207981876132ef565b500161202e565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576120b46120bc913690600401612f78565b6107de6145aa565b60208151910120600052600c60205260406000205b80548015610384576000198101908111611223576112036120f29183614cac565b6120d1565b346102d8576121053661319d565b909161211e336000526005602052604060002054151590565b1561038657600052600a60205260406000205461213b81336147ef565b9060ff600183015460e01c1661215081612fa6565b61215657005b61218161217a6103849561216b368783613319565b60208151910120953691613319565b843361487f565b614976565b346102d8576121a261219736613166565b929093913691613319565b602081519101208060005260186020526121c3604060002092848454614402565b916121cd8361320d565b936121db6040519586612f1b565b838552601f196121ea8561320d565b0160005b81811061230357505060005b848110612262578560405180916020820160208352815180915260206040840192019060005b81811061222e575050500390f35b825180516001600160a01b0316855260209081015163ffffffff168186015286955060409094019390920191600101612220565b806001600160a01b0361228061227a60019486613225565b86614cac565b90549060031b1c168560005260156020526040600281600020016000906001600160a01b038416825260205220604051906122ba82612ec6565b5490602060ff63ffffffff841693848452821c161515910152604051916122e083612ec6565b825260208201526122f182896132ef565b526122fc81886132ef565b50016121fa565b60209060405161231281612ec6565b6000815260008382015282828a010152016121ee565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576107de61235c913690600401612f78565b60208151910120600052600c6020526020604060002054604051908152f35b346102d85760203660031901126102d8576123946145aa565b600435600052600a602052604060002054806000526008602052604060002060ff600182015460e01c166123c781612fa6565b1561037b57005b346102d8576123e56123df36612e21565b90613c72565b60405180916020820160208352815180915260206040840192019060005b818110612411575050500390f35b919350916020606060019263ffffffff60408851805184526001600160a01b038682015116868501520151166040820152019401910191849392612403565b346102d85761245e366130db565b928291924211612590576001600160a01b0381169361248a856000526005602052604060002054151590565b1561257b5761249885614d6a565b936001600160a01b036124ae838388888861470e565b16600052600360205260ff604060002054161561255a57858581600052600e6020526040600020905b81548015612518576000198101908111611223576124f86125139184614cac565b90549060031b1c806000526008602052604060002090614a71565b6124d7565b60008285808352600660205282604081205561253381614f36565b507f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b358380a4005b60405163335d4ce160e01b81529485946125779460048701613550565b0390fd5b8463c2dda3f960e01b60005260045260246000fd5b6001600160a01b0390631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760603660031901126102d85760043567ffffffffffffffff81116102d8576125e6903690600401612f78565b6125ee613153565b6044359182151583036102d857610384936126076145aa565b6139a4565b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d85761263d903690600401613122565b6024359167ffffffffffffffff83116102d857612661610384933690600401612f78565b92909161358c565b346102d85760203660031901126102d8576001600160a01b0361268a612e78565b166000526014602052611a1461129c6126ad60406000206040519283809261326c565b604051918291602083526020830190612e37565b346102d8576126cf366130db565b8293924211612767576001600160a01b0383166126f9816000526005602052604060002054151590565b156127535761270790614d6a565b916001600160a01b0361271d838386898961470e565b16600052600360205260ff604060002054161561273657005b6125779260405195869563335d4ce160e01b875260048701613550565b63c2dda3f960e01b60005260045260246000fd5b836001600160a01b0384631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760203660031901126102d8576001600160a01b036127ae612e78565b6127b66145aa565b16600052600b60205260406000205b80548015610384576000198101908111611223576112036127e69183614cac565b6127c5565b346102d85760403660031901126102d857612804612e78565b60243567ffffffffffffffff811681036102d857610384916128246145aa565b61341d565b346102d85761284661283a36612e21565b81601a93929354614402565b906128508261320d565b9161285e6040519384612f1b565b808352601f1961286d8261320d565b0160005b818110612a00575050601a54909160005b83811061292e578460405160208101916020825280518093526040820192602060408260051b85010192019060005b8181106128be5784840385f35b909192603f1985820301865283519081519160038310156129185761290982606060406020959460019787965263ffffffff8682015116868501520151918160408201520190612e37565b950196019101949190946128b1565b634e487b7160e01b600052602160045260246000fd5b6129388183613225565b6000848210156129ec57601a90526040519060011b7f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e01600061297a83612eaa565b81549060ff82169060038210156129d85750835260081c63ffffffff16602083015260405160019392916129b790829061129c908290880161326c565b60408201526129c682886132ef565b526129d181876132ef565b5001612882565b80634e487b7160e01b602492526021600452fd5b80634e487b7160e01b602492526032600452fd5b602090604051612a0f81612eaa565b600081526000838201526060604082015282828801015201612871565b346102d85760803660031901126102d857612a45612e78565b60243567ffffffffffffffff81116102d857612a7991612a6c612a7f923690600401612f78565b9390604435943691613319565b9061445d565b90816000526009602052612a9b60643582604060002054614402565b90612aa5826133ae565b9260005b838110612abe5760405180611a14878261307b565b600190826000526009602052612adf611d0f6040600020611d098488613225565b612ae982886132ef565b52612af481876132ef565b5001612aa9565b346102d85760003660031901126102d857611a146126ad612f3d565b346102d857612b34612b2836612e21565b81600493929354614402565b612b3d8161320d565b91612b4b6040519384612f1b565b818352612b578261320d565b602084019290601f19013684376004549160005b828110612bc05784866040519182916020830190602084525180915260408301919060005b818110612b9e575050500390f35b82516001600160a01b0316845285945060209384019390920191600101612b90565b612bca8183613225565b6000858210156129ec57600490527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015460008190526006602052600191906001600160a01b0316612c1c82896132ef565b5201612b6b565b346102d85760203660031901126102d8576020612c5d6001600160a01b03612c49612e78565b166000526005602052604060002054151590565b6040519015158152f35b346102d857612c84612c7836612e21565b81601693929354614402565b612c8d8161320d565b91612c9b6040519384612f1b565b818352601f19612caa8361320d565b0160005b818110612dee575050601654919060005b828110612d5d57846040518091602082016020835281518091526040830190602060408260051b8601019301916000905b828210612cff57505050500390f35b919360019193955060208091603f1989820301855287519081518152606080612d35858501516080878601526080850190612e37565b9363ffffffff6040820151166040850152015115159101529601920192018594939192612cf0565b612d678183613225565b6000858210156129ec579060208260166001959452200160ff6040600092549283815260156020522061129c612db6868301549260405195612da887612e8e565b86526040519283809261326c565b602084015263ffffffff8116604084015260201c1615156060820152612ddc82886132ef565b52612de781876132ef565b5001612cbf565b602090604051612dfd81612e8e565b60008152606083820152600060408201526000606082015282828801015201612cae565b60409060031901126102d8576004359060243590565b919082519283825260005b848110612e63575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612e42565b600435906001600160a01b03821682036102d857565b6080810190811067ffffffffffffffff821117610fbf57604052565b6060810190811067ffffffffffffffff821117610fbf57604052565b6040810190811067ffffffffffffffff821117610fbf57604052565b60a0810190811067ffffffffffffffff821117610fbf57604052565b610140810190811067ffffffffffffffff821117610fbf57604052565b90601f8019910116810190811067ffffffffffffffff821117610fbf57604052565b60405190612f4c604083612f1b565b601a82527f576f726b666c6f77526567697374727920322e302e302d6465760000000000006020830152565b9181601f840112156102d85782359167ffffffffffffffff83116102d857602083818601950101116102d857565b6002111561291857565b61307891815181526001600160a01b03602083015116602082015267ffffffffffffffff60408301511660408201526060820151612fed81612fa6565b606082015261012061306661305261304061302e61301c60808801516101406080890152610140880190612e37565b60a088015187820360a0890152612e37565b60c087015186820360c0880152612e37565b60e086015185820360e0870152612e37565b610100850151848203610100860152612e37565b92015190610120818403910152612e37565b90565b602081016020825282518091526040820191602060408360051b8301019401926000915b8383106130ae57505050505090565b90919293946020806130cc600193603f198682030187528951612fb0565b9701930193019193929061309f565b60606003198201126102d8576004356001600160a01b03811681036102d85791602435916044359067ffffffffffffffff82116102d85761311e91600401612f78565b9091565b9181601f840112156102d85782359167ffffffffffffffff83116102d8576020808501948460051b0101116102d857565b6024359063ffffffff821682036102d857565b60606003198201126102d8576004359067ffffffffffffffff82116102d85761319191600401612f78565b90916024359060443590565b9060406003198301126102d857600435916024359067ffffffffffffffff82116102d85761311e91600401612f78565b9060406003198301126102d8576004356001600160a01b03811681036102d857916024359067ffffffffffffffff82116102d85761311e91600401612f78565b67ffffffffffffffff8111610fbf5760051b60200190565b9190820180921161122357565b90600182811c92168015613262575b602083101461324c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613241565b6000929181549161327c83613232565b80835292600181169081156132d2575060011461329857505050565b60009081526020812093945091925b8383106132b8575060209250010190565b6001816020929493945483858701015201910191906132a7565b915050602093945060ff929192191683830152151560051b010190565b80518210156133035760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b92919267ffffffffffffffff8211610fbf5760405191613343601f8201601f191660200184612f1b565b8294818452818301116102d8578281602093846000960137010152565b6040519061336d82612efe565b6060610120836000815260006020820152600060408201526000838201528260808201528260a08201528260c08201528260e0820152826101008201520152565b906133b88261320d565b6133c56040519182612f1b565b82815280926133d6601f199161320d565b019060005b8281106133e757505050565b6020906133f2613360565b828285010152016133db565b60135481101561330357601360005260206000209060011b0190600090565b90601954906001600160a01b038216906001600160a01b0367ffffffffffffffff8460a01c169416938285149485809661350f575b61350757806080957fc0c3ee74e6d6070ee9c493e8b4f0477d2e66600f22997a4e073288d38d65933b97156134f2575b505067ffffffffffffffff8316928284036134b1575b50604051938452602084015260408301526060820152a1565b7fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b6019549260a01b1691161760195538613498565b6001600160a01b031916176019558038613482565b505050505050565b508167ffffffffffffffff841614613452565b9190820391821161122357565b908060209392818452848401376000828201840152601f01601f1916010190565b90926080926001600160a01b03613078979516835260208301526040820152816060820152019161352f565b91908110156133035760051b0190565b92918115610669576135ab336000526005602052604060002054151590565b15610386576135bb368483613319565b6020815191012092600091825b848110613744575063ffffffff831615613507576135e7913691613319565b90836000526015602052604060002060018101549060ff8260201c161561372257600201906001600160a01b0333166000528160205260ff60406000205460201c1660001461370e57506001600160a01b03331660005260205263ffffffff806136768160406000205416935b3360005260106020526040600020886000526020528260406000205416614865565b92169116116136f0575060005b8181106136905750505050565b8061369e600192848761357c565b35600052600a6020526040600020548060005260086020528460406000208460ff8183015460e01c166136d081612fa6565b146136df575b50505001613683565b6136e892614976565b3884816136d6565b6125779060405191829163038857ff60e01b8352336004840161443d565b63ffffffff91506136768280921693613654565b60405163393f328760e11b815260206004820152806125776024820187612e37565b9261375084868961357c565b35600052600a60205260ff600161376c604060002054336147ef565b015460e01c1661377b81612fa6565b1561379e5763ffffffff1663ffffffff8114611223576001809101935b016135c8565b92600190613798565b8181106137b2575050565b600081556001016137a7565b9190601f81116137cd57505050565b6137f9926000526020600020906020601f840160051c830193106137fb575b601f0160051c01906137a7565b565b90915081906137ec565b90601a5468010000000000000000811015610fbf5760018101601a556000601a548210156129ec57601a90526000929060011b7f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e018151600381101561396b5760409160019160ff825491168060ff19831617835564ffffffff00602087015160081b169164ffffffffff191617178155019101519283519067ffffffffffffffff8211613957576138bb82610cdc8554613232565b602090601f83116001146138f957906138ea939495836138ee5750508160011b916000199060031b1c19161790565b9055565b015190503880610cfe565b90601f198316848352818320925b81811061393f57509583600195969710613926575b505050811b019055565b015160001960f88460031b161c1916905538808061391c565b9192602060018192868b015181550194019201613907565b80634e487b7160e01b602492526041600452fd5b602485634e487b7160e01b81526021600452fd5b9161399d60209263ffffffff9296959660408652604086019161352f565b9416910152565b90919392936139b4368484613319565b6020815191012090600086600014613c055750905b80600052601560205260406000209560018701908154901515908160ff8260201c161515149081613bf2575b50613be8578754613a0581613232565b15613ab6575b50815464ffffffffff1916602091821b64ff00000000161763ffffffff85169081179092556040805191820193909352808301919091529081529394507f4495c6e60e22d8ab3b00a16160c4954fb24d2d51d48044a0d292dddc3161b73193613ab19190613aa590613a7e606082612f1b565b60405190613a8b82612eaa565b6000825263ffffffff421660208301526040820152613805565b6040519384938461397f565b0390a1565b67ffffffffffffffff8711610fbf5786613ad2613ad892613232565b8a6137be565b600097601f8711600114613b595791613ab1949391613aa593613b3489807f4495c6e60e22d8ab3b00a16160c4954fb24d2d51d48044a0d292dddc3161b7319c9d600091613b4e57508160011b916000199060031b1c19161790565b90555b613b4083614e80565b509193945091889750613a0b565b90508a013538611dca565b8089526020892098601f198816815b818110613bd05750917f4495c6e60e22d8ab3b00a16160c4954fb24d2d51d48044a0d292dddc3161b731999a613ab1979694928a613aa5979510613bb6575b5050600189811b019055613b37565b89013560001960038c901b60f8161c191690553880613ba7565b888301358c556001909b019a60209283019201613b68565b5050505050509050565b905063ffffffff808616911614386139f5565b9050906139c9565b90613c178261320d565b613c246040519182612f1b565b8281528092613c35601f199161320d565b019060005b828110613c4657505050565b602090604051613c5581612eaa565b600081526000838201526000604082015282828501015201613c3a565b90613c809082601354614402565b908115613d7757613c9082613c0d565b91600091825b828110613ced5750508110613ca9575090565b613cb281613c0d565b9160005b828110613cc35750505090565b80613cd0600192846132ef565b51613cdb82876132ef565b52613ce681866132ef565b5001613cb6565b613cff613cfa8284613225565b6133fe565b50600181015463ffffffff8160a01c1690428211613d23575b505050600101613c96565b6001600160a01b039060409794975193613d3c85612eaa565b5484521660208301526040820152613d5482876132ef565b52613d5f81866132ef565b50600019811461122357600180910193903880613d18565b50506040516000613d89602083612f1b565b81526000805b818110613d9b57505090565b602090604051613daa81612eaa565b600081526000838201526000604082015282828601015201613d8f565b92909391844211613f99576001600160a01b038416613df3816000526005602052604060002054151590565b613f6c5781600052600760205260ff60406000205416613f3c57600090613e4f613e69613e1e612f3d565b6040519283916020830195878752604084015246606084015230608084015260e060a0840152610100830190612e37565b8a60c08301528660e083015203601f198101835282612f1b565b5190207f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c52613eaa603c8220613ea4368787613319565b90614dcd565b90919260048310156129d85782613f04575050506001600160a01b031660009081526003602052604090205460ff1615613ee5575050505050565b90612577929160405195869563335d4ce160e01b875260048701613550565b5060405163d36ab6b960e01b81526060600482015291829160ff613f2c606485018a8a61352f565b9216602484015260448301520390fd5b7f77a338580000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7fd9a5f5ca0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b846001600160a01b03857f502d038700000000000000000000000000000000000000000000000000000000600052166004524260245260445260646000fd5b939161307895936001600160a01b03613fff9316865260606020870152606086019161352f565b92604081850391015261352f565b9091614026336000526005602052604060002054151590565b156103865781600052600a6020526040600020549061404582336147ef565b60ff600182015460e01c1661405981612fa6565b6141255761408e908360005260116020526040600020549283600052601560205261409560406000206040519485809261326c565b0384612f1b565b6140a0368289613319565b6020815191012080941461411c576140f36141079483876140e5614117967f9b5361a5258ef6ac8039fd2d2ac276734695219cfd870711e7922c236e5db16d9a61460d565b61218161217a36878e613319565b604051938493604085526040850190612e37565b908382036020850152339761352f565b0390a3565b50505050505050565b7fd74915a80000000000000000000000000000000000000000000000000000000060005260046000fd5b9261415b368484613319565b60208151910120948560005260156020526040600020600181019060ff825460201c161561435257600201604060006001600160a01b03891681528260205220926000146142c457505463ffffffff8381169116811161429a57815460ff8160201c161560001461423a5750815464ffffffffff1916176401000000001790556000948552601860205260409094206001600160a01b03909316937f945de380da34dd2a3da003b018b92eb5714e63dbcc911e3caef8307407c82324936142359190614228908790614eda565b506040519384938461397f565b0390a2565b819392959694975063ffffffff161415600014613507577f945de380da34dd2a3da003b018b92eb5714e63dbcc911e3caef8307407c82324946001600160a01b03946142359363ffffffff1982541617905560405194859416968461397f565b7feabc4fd90000000000000000000000000000000000000000000000000000000060005260046000fd5b959692505060ff909392935460201c161561434b577f6b349f5a70df2e3faf5fb1a615930e6816698828af7279d4d231f0edc013d849936001600160a01b0386166000526020526000604081205560005260186020526143336001600160a01b03604060002095168095615000565b5061423560405192839260208452602084019161352f565b5050505050565b60405163393f328760e11b8152602060048201528061257760248201898961352f565b9190614382913691613319565b6020815191012060005260156020526001600160a01b03604060002091166000526002810160205260406000206020604051916143be83612ec6565b549160ff63ffffffff841693848352831c16151591829101526143e957506001015463ffffffff1690565b905090565b356001600160a01b03811681036102d85790565b808210156144355782816144196130789585613225565b11156144255750613522565b614430915082613225565b613522565b505050600090565b6040906001600160a01b0361307894931681528160208201520190612e37565b906144766108559160405192839160208301958661443d565b51902090565b614484613360565b81600052600860205260406000206001810154926001600160a01b0384169283156145a257509160066145878361129c9567ffffffffffffffff61459996549860ff8160e01c1692600052601160205260406000205460005260156020526040600020966040519a6144f58c612efe565b8b5260208b015260a01c16604089015261450e81612fa6565b60608801526040516145278161129c816002860161326c565b60808801526040516145408161129c816003860161326c565b60a08801526040516145598161129c816004860161326c565b60c08801526040516145728161129c816005860161326c565b60e088015261129c604051809481930161326c565b6101008501526040519283809261326c565b61012082015290565b935050505090565b6001600160a01b036001541633036145be57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b90916145ff6130789360408452604084019061326c565b91602081840391015261326c565b7ff764e70143a953f513d351195b60c30d5fdaaca38edb60b262997f551e48868960018301916001600160a01b038354947c010000000000000000000000000000000000000000000000000000000060ff60e01b1987161785558260005260116020526146a38260406000205497169387600284019561469d6040516146978161129c818c61326c565b8261445d565b92614cc4565b6146ed8154604051908860208301526040820152604081526146c6606082612f1b565b604051906146d382612eaa565b6002825263ffffffff421660208301526040820152613805565b549354169360005260156020526040600020614117604051928392836145e8565b916147749061475b9261471f612f3d565b916040519485936001600160a01b03602086019860018a5216604086015246606086015230608086015260e060a0860152610100850190612e37565b9160c084015260e083015203601f198101835282612f1b565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c526147b1603c600020613ea4368585613319565b600482959395101561291857816147c9575050505090565b60ff613f2c60405195869563d36ab6b960e01b875260606004880152606487019161352f565b9060005260086020526040600020906001600160a01b0360018301541690811561483b576001600160a01b0316809103614827575090565b6331ee6dc760e01b60005260045260246000fd5b7f871e01b20000000000000000000000000000000000000000000000000000000060005260046000fd5b9063ffffffff8091169116019063ffffffff821161122357565b90806000526015602052604060002060018101549060ff8260201c161561495457600201906001600160a01b0384166000528160205260ff60406000205460201c1660001461494657506001600160a01b03831660005260205263ffffffff60406000205416905b6001600160a01b038316600052601060205260406000209060005260205263ffffffff8061491d60018260406000205416614865565b921691161161492a575050565b61257760405192839263038857ff60e01b84526004840161443d565b63ffffffff915016906148e7565b60405163393f328760e11b815260206004820152806125776024820188612e37565b7f7fdfd5efa814f8c90ef997a11cfbb29660e5af33312debb9c4898169a73f824a906001600160a01b0360018401936149cd82865416938760028401956149c76040516146978161129c818c61326c565b92614c08565b60ff60e01b1985541685556146ed8154604051908860208301526040820152604081526149fb606082612f1b565b60405190614a0882612eaa565b6001825263ffffffff421660208301526040820152613805565b614a2c8154613232565b9081614a36575050565b81601f60009311600114614a48575055565b81835260208320614a6491601f0160051c8101906001016137a7565b8082528160208120915555565b90614697907f48f05f657e3e9a02bfe546c4d3961f08b1f9a0f9798b13fcbc2231173b1ecd94614b90614aff614b9e6001600160a01b036001860195865460ff8a848316614acd61129c600287019d8e6040519283809261326c565b938491836000526011602052604060002054948592836000526015602052614b0660406000206040519d8e809261326c565b038d612f1b565b60e01c16614b1381612fa6565b15614bf6575b50505050600052600d602052614b338a6040600020615000565b5082885416600052600e602052614b4e8a6040600020615000565b506000526009602052614b65896040600020615000565b508054600052600a602052600060408120555495541695604051938493604085526040850190612e37565b90838203602085015261326c565b0390a36000526008602052600660406000206000815560006001820155614bc760028201614a22565b614bd360038201614a22565b614bdf60048201614a22565b614beb60058201614a22565b01614a2c8154613232565b614bff93614cc4565b8a828238614b19565b9192906001600160a01b03168060005260106020526040600020846000526020526040600020600163ffffffff8254160163ffffffff81116112235763ffffffff1663ffffffff1982541617905583600052600c602052614c6d836040600020614eda565b50600052600b602052614c84826040600020614eda565b50600052600f602052614c9b816040600020614eda565b506000526011602052604060002055565b80548210156133035760005260206000200190600090565b9291906001600160a01b031680600052600b602052614ce7846040600020615000565b5081600052600c602052614cff846040600020615000565b506000526010602052604060002090600052602052604060002060001963ffffffff8254160163ffffffff81116112235763ffffffff1663ffffffff19825416179055600052600f602052614d58816040600020615000565b50600052601160205260006040812055565b80600052600660205260406000205490811580614db7575b614d8a575090565b7f02b566860000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5080600052600560205260406000205415614d82565b8151919060418303614dfe57614df792506020820151906060604084015193015160001a906150bd565b9192909190565b505060009160029190565b80600052600560205260406000205415600014614e7a5760045468010000000000000000811015610fbf57614e61614e4a8260018594016004556004614cac565b819391549060031b91821b91600019901b19161790565b9055600454906000526005602052604060002055600190565b50600090565b80600052601760205260406000205415600014614e7a5760165468010000000000000000811015610fbf57614ec1614e4a8260018594016016556016614cac565b9055601654906000526017602052604060002055600190565b6000828152600182016020526040902054614f2f5780549068010000000000000000821015610fbf5782614f18614e4a846001809601855584614cac565b905580549260005201602052604060002055600190565b5050600090565b6000818152600560205260409020548015614f2f5760001981018181116112235760045460001981019190821161122357818103614fc6575b5050506004548015614fb05760001901614f8a816004614cac565b8154906000199060031b1b19169055600455600052600560205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b614fe8614fd7614e4a936004614cac565b90549060031b1c9283926004614cac565b90556000526005602052604060002055388080614f6f565b90600182019181600052826020526040600020548015156000146150b45760001981018181116112235782546000198101919082116112235781810361507d575b50505080548015614fb057600019019061505b8282614cac565b8154906000199060031b1b191690555560005260205260006040812055600190565b61509d61508d614e4a9386614cac565b90549060031b1c92839286614cac565b905560005283602052604060002055388080615041565b50505050600090565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615146579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa1561513a576000516001600160a01b0381161561512e5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fea164736f6c634300081a000a", + Bin: "0x60803460a8573315609757600180546001600160a01b0319163317905560a081016001600160401b03811182821017608157604090815280825260208083015260c882820152610400606083015262093a80608090920191909152600280546001600160481b03191667093a800400c820401790555161518c90816100ae8239f35b634e487b7160e01b600052604160045260246000fd5b639b15e16f60e01b60005260046000fd5b600080fdfe610140604052600436101561001357600080fd5b60003560e01c806301b7690514612c485780630987294c14612c0457806317e0edfc14612af8578063181f5a7714612adc5780631c08b00a14612a0d5780631c71682c1461280a578063245b8e4e146127cc578063274e00e01461276e578063289bd108146126a25780632afc41301461264a5780632c50a955146125ed578063351412511461259657806339d68c6a1461243157806339e43234146123af5780633c17181b1461235c5780633c54b50b146123095780634b6d2e5b14612167578063530979d6146120d8578063556dbd0d146120615780636104319314611fc4578063695e134014611f7357806370ae264014611f3d57806379ba509714611ea4578063865ec9e014611e6b5780638b42a96d14611d185780638c42ffc514611c645780638da5cb5b14611c3d57806394ea0da614611a62578063952bb98414611a17578063a0b8a4fe146119f9578063a408901614611956578063a6008f2014611834578063a7d018581461178d578063afbb240114611776578063b377bfc5146108e1578063b668435f14610879578063ba8706861461085b578063bae5c29a146107e2578063bdf6b4ff1461077f578063be67433314610758578063c3f909d4146106d2578063cabb9e7a14610693578063d8b80738146105b1578063d8e4a72414610457578063dc101969146103b9578063de49b95f1461039b578063e690f33214610317578063ea32308b146102dd5763f2fde38b1461023857600080fd5b346102d85760203660031901126102d8576001600160a01b03610259612e59565b6102616145d7565b163381146102ae57806001600160a01b031960005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b346102d85760203660031901126102d8576001600160a01b036102fe612e59565b16600052600b6020526020604060002054604051908152f35b346102d85760203660031901126102d85761033f336000526005602052604060002054151590565b1561038657600435600052600a60205260406000205461035f813361481c565b600160ff8183015460e01c1661037481612f87565b0361037b57005b6103849161463a565b005b63c2dda3f960e01b6000523360045260246000fd5b346102d85760003660031901126102d8576020601354604051908152f35b346102d85760603660031901126102d85760443560243567ffffffffffffffff82116102d8576103fd6103f26001933690600401612f59565b908360043533613da8565b3360005260066020528060406000205561041633614e36565b5080600052600760205260406000208260ff19825416179055337f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b35600080a4005b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d857610488903690600401613103565b602435918215158093036102d85761049e6145d7565b60ff831660005b83811061052f57505060405191806040840160408552526060830191906000905b8082106104fc577f861d38caf3055a11344d9f540d5ab4e5c38d751dfcbd1156aed92b71805e13168580868960208301520390a1005b9091928335906001600160a01b03821682036102d857602080916001600160a01b036001941681520194019201906104c6565b6001600160a01b0361054a61054583878761355d565b61441b565b161561058757806001600160a01b03610569610545600194888861355d565b16600052600360205260406000208360ff19825416179055016104a5565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576105e2903690600401613103565b8015610669576105ff336000526005602052604060002054151590565b156103865760005b81811061061057005b8061061e600192848661355d565b35600052600a602052604060002054610637813361481c565b8360ff8183015460e01c1661064b81612f87565b03610659575b505001610607565b6106629161463a565b8480610651565b7faea36d000000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d8576001600160a01b036106b4612e59565b166000526003602052602060ff604060002054166040519015158152f35b346102d85760003660031901126102d857600060806040516106f381612ec3565b828152826020820152826040820152826060820152015260a0610714614130565b63ffffffff60806040519260ff815116845260ff602082015116602085015260ff604082015116604085015261ffff60608201511660608501520151166080820152f35b346102d857602061077161076b366131ae565b916143a2565b63ffffffff60405191168152f35b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576107b36107ba913690600401612f59565b36916132fa565b602081519101206000526015602052602063ffffffff60016040600020015416604051908152f35b346102d85760403660031901126102d8576107fb612e59565b6040516108388161082a60208201946024359086602090939291936001600160a01b0360408201951681520152565b03601f198101835282612efc565b5190206000526012602052602063ffffffff604060002054166040519042108152f35b346102d85760003660031901126102d8576020601a54604051908152f35b346102d85760803660031901126102d857610892612e59565b60243567ffffffffffffffff81116102d8576108b2903690600401612f59565b6044359063ffffffff821682036102d8576064359283151584036102d857610384946108dc6145d7565b61417c565b346102d8576101203660031901126102d85760043567ffffffffffffffff81116102d857610913903690600401612f59565b610120526101005260243567ffffffffffffffff81116102d85761093b903690600401612f59565b600260643510156102d85760843567ffffffffffffffff81116102d857610966903690600401612f59565b9060e0529060a43567ffffffffffffffff81116102d85761098b903690600401612f59565b909360c43567ffffffffffffffff81116102d8576109ad903690600401612f59565b9360e43567ffffffffffffffff81116102d8576109ce903690600401612f59565b92909361010435988915998a15036102d8576109f7336000526005602052604060002054151590565b15610386576044351561174c57604435600052600a60205260406000205461171c57610a21614130565b9660ff60408901511681156116f257806116b5575b5061ffff60025460181c16801515806116ac575b61167b57508415611651576101205115611627576040516020810190610a7e8161082a898861012051610100513389613fb9565b5190209889600052600860205260406000206001600160a01b0360018201541680156000146112a4575050610ac3610abd3661012051610100516132fa565b3361448a565b9b610ad1368d60e0516132fa565b602081519101209960ff6020820151168015158061129b575b61126a57505160ff168015158061125e575b61122a575061119e575b610b11606435612f87565b60643515611176575b604051978861012081011067ffffffffffffffff6101208b011117610f9f57610bc7899695610bb88897610bd6956101208a016040526044358a5260a0610bac60208c019a338c5260408d0160c05267ffffffffffffffff421660c0515260608d019a610b88606435612f87565b6064358c526080610ba03661012051610100516132fa565b9e019d8e5236916132fa565b9b019a8b5236916132fa565b9860c08c01998a5236916132fa565b9760e08a0198895236916132fa565b610100880160a05260a051528860005260086020526040600020965187556001600160a01b038060018901935116166001600160a01b031983541617825560c051517fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b8085549360a01b1616911617825551610c5d81612f87565b610c6681612f87565b60ff60e01b197cff0000000000000000000000000000000000000000000000000000000083549260e01b16911617905560028501905180519067ffffffffffffffff8211610f9f57610cc282610cbc8554613213565b8561379f565b602090601f831160011461110f57610cf3929160009183611104575b50508160011b916000199060031b1c19161790565b90555b518051600385019167ffffffffffffffff8211610f9f57610d1b82610cbc8554613213565b602090601f831160011461109d57610d4b9291600091836110925750508160011b916000199060031b1c19161790565b90555b518051600484019167ffffffffffffffff8211610f9f57610d7382610cbc8554613213565b602090601f831160011461102b57610da3929160009183610fb55750508160011b916000199060031b1c19161790565b90555b518051600583019167ffffffffffffffff8211610f9f57610dcb82610cbc8554613213565b602090601f8311600114610fc0579180610e00926006969594600092610fb55750508160011b916000199060031b1c19161790565b90555b019360a0515194855167ffffffffffffffff8111610f9f57610e2f81610e298454613213565b8461379f565b6020601f8211600114610f35579080610e6392610eb99899600092610f2a5750508160011b916000199060031b1c19161790565b90555b6000526009602052610e7c826040600020614f07565b50604435600052600a60205281604060002055600052600d602052610ea5816040600020614f07565b5033600052600e6020526040600020614f07565b50610ed26040519160608352606083019060e051613510565b610edd606435612f87565b606435602083015281810360408301527f74dc2e5bdab0a48c5e7d33c1eaad00066fd19c8d9f29d4c3a251711c0a0e9a09339280610f25604435946101205161010051613510565b0390a3005b015190508980610cde565b601f1982169783600052816000209860005b818110610f87575091610eb9989991846001959410610f6e575b505050811b019055610e66565b015160001960f88460031b161c19169055888080610f61565b838301518b556001909a019960209384019301610f47565b634e487b7160e01b600052604160045260246000fd5b015190508a80610cde565b90601f1983169184600052816000209260005b818110611013575091600193918560069897969410610ffa575b505050811b019055610e03565b015160001960f88460031b161c19169055898080610fed565b92936020600181928786015181550195019301610fd3565b90601f1983169184600052816000209260005b81811061107a5750908460019594939210611061575b505050811b019055610da6565b015160001960f88460031b161c19169055898080611054565b9293602060018192878601518155019501930161103e565b015190508b80610cde565b90601f1983169184600052816000209260005b8181106110ec57509084600195949392106110d3575b505050811b019055610d4e565b015160001960f88460031b161c191690558a80806110c6565b929360206001819287860151815501950193016110b0565b015190508c80610cde565b90601f1983169184600052816000209260005b81811061115e5750908460019594939210611145575b505050811b019055610cf6565b015160001960f88460031b161c191690558b8080611138565b92936020600181928786015181550195019301611122565b61118d611186368d60e0516132fa565b8a336148ac565b6111998c8a338d614c35565b610b1a565b9a999897969594939291908a600052600f60205260406000206080525b6080515480156112195780600019810111611203576111e36111fe9160001901608051614cd9565b90549060031b1c80600052600860205260406000209061463a565b6111bb565b634e487b7160e01b600052601160045260246000fd5b50909192939495969798999a610b06565b7f36a7c503000000000000000000000000000000000000000000000000000000006000526101205160045260245260446000fd5b50806101205111610afc565b887f436f97540000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808911610aea565b9395979950979b5094509791503303611612578454600052600a60205260006040812055604435600052600a602052604060002055835495604435855560038501916040516112fe816112f7818761324d565b0382612efc565b602081519101206113103684846132fa565b602081519101200361154b575b5050506004830191604051611336816112f7818761324d565b602081519101206113483684846132fa565b602081519101200361147b575b5050506006019067ffffffffffffffff8111610f9f5761137981610e298454613213565b6000601f82116001146114175781906113ab9394959660009261140c5750508160011b916000199060031b1c19161790565b90555b6113c66040519260408452604084019060e051613510565b9082820360208401527f03d454e4bcb8ae5031ab165ca5f4161ebf48cfaf66d96cc490ba500a59a1e322339380611407604435956101205161010051613510565b0390a4005b013590508680610cde565b601f198216958382526020822091805b88811061146357508360019596979810611449575b505050811b0190556113ae565b0135600019600384901b60f8161c1916905585808061143c565b90926020600181928686013581550194019101611427565b67ffffffffffffffff8211610f9f5761149882610cbc8554613213565b600090601f83116001146114e35791806114cd9260069695946000926114d85750508160011b916000199060031b1c19161790565b90555b908680611355565b013590508a80610cde565b8382526020822091601f198416815b818110611533575091600193918560069897969410611519575b505050811b0190556114d0565b0135600019600384901b60f8161c1916905589808061150c565b919360206001819287870135815501950192016114f2565b67ffffffffffffffff8211610f9f5761156882610cbc8554613213565b600090601f83116001146115ae576115989291600091836115a35750508160011b916000199060031b1c19161790565b90555b87808061131d565b013590508b80610cde565b8382526020822091601f198416815b8181106115fa57509084600195949392106115e0575b505050811b01905561159b565b0135600019600384901b60f8161c191690558a80806115d3565b919360206001819287870135815501950192016115bd565b6331ee6dc760e01b6000523360045260246000fd5b7f485b8ed40000000000000000000000000000000000000000000000000000000060005260046000fd5b7f65cf28770000000000000000000000000000000000000000000000000000000060005260046000fd5b867f354f25140000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808711610a4a565b8082116116db57808a1115610a3657896219aad560e31b60005260045260245260446000fd5b906219aad560e31b60005260045260245260446000fd5b7f9cd963cf0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f0d5354a40000000000000000000000000000000000000000000000000000000060005260443560045260246000fd5b7f315de7450000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d8576103846117873661317e565b91613fee565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576117be903690600401613103565b80156106695760005b8181106117d057005b806117de600192848661355d565b356117e76145d7565b600052600a602052604060002054806000526008602052604060002060ff8482015460e01c1661181681612f87565b15611824575b5050016117c7565b61182d9161463a565b848061181c565b346102d85760a03660031901126102d85760043560ff81168091036102d8576024359060ff8216908183036102d8576044359160ff8316908184036102d8576064359161ffff8316918284036102d8576084359663ffffffff8816948589036102d85764ffff00000060a09862ff00007f9c1a161a4cdd9b19a46f9660eee21b6394dc5aa70fc9e093dbb36d2c1786d7739b6118ce6145d7565b8960806040516118dd81612ec3565b8d81528960208201528a60408201528b6060820152015268ffffffff00000000006002549160281b169561ff0068ffffffff000000000019928d87199162ffffff191617169160081b1617169160101b16179160181b1617176002556040519485526020850152604084015260608301526080820152a1005b346102d85760603660031901126102d85761196f612e59565b60243567ffffffffffffffff81116102d85761198f903690600401612f59565b916044359267ffffffffffffffff84116102d8576119d96119e19361082a6119be6119f5973690600401612f59565b906119c7613341565b50604051958694602086019889613fb9565b5190206144a9565b604051918291602083526020830190612f91565b0390f35b346102d85760003660031901126102d8576020600454604051908152f35b346102d85760803660031901126102d857611a30612e59565b6064359067ffffffffffffffff82116102d857611a54610384923690600401612f59565b916044359060243590613da8565b346102d85760403660031901126102d857600435611a7e613134565b63ffffffff8060025460281c16911690428211801590611c21575b611bed5750611ab5336000526005602052604060002054151590565b1561038657604080513360208201908152918101849052611ad9816060810161082a565b519020600052601260205260406000208163ffffffff19825416179055604051611b0281612e8b565b8281526020810190338252604081019083825260135468010000000000000000811015610f9f57806001611b3992016013556133df565b611bd75760016001600160a01b039291839251815501935116166001600160a01b0319835416178255517fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff77ffffffff000000000000000000000000000000000000000083549260a01b1691161790556040519081527ff69135e4f80a25991d2f877c365c191c51ec3c0063ecb9299d314cd9da4880d160203392a3005b634e487b7160e01b600052600060045260246000fd5b917f7ffd3b8f0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b508015158015611a99575080611c374284613503565b11611a99565b346102d85760003660031901126102d85760206001600160a01b0360015416604051908152f35b346102d85760603660031901126102d857611c7d612e59565b6001600160a01b0360243591169081600052600e602052611ca66044358260406000205461442f565b90611cb08261338f565b9260005b838110611cc957604051806119f5878261305c565b60019082600052600e602052611cfc611cf06040600020611cea8488613206565b90614cd9565b90549060031b1c6144a9565b611d0682886132d0565b52611d1181876132d0565b5001611cb4565b346102d8576001600160a01b03611d2e366131ae565b929091611d396145d7565b169081600052601460205260406000209267ffffffffffffffff8111610f9f57611d6d81611d678654613213565b8661379f565b600093601f8211600114611de957611dbf82807f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f139697600091611dde575b508160011b916000199060031b1c19161790565b90555b611dd9604051928392602084526020840191613510565b0390a2005b905085013588611dab565b80855260208520601f19831695805b878110611e535750837f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f13969710611e39575b5050600182811b019055611dc2565b840135600019600385901b60f8161c191690558580611e2a565b90916020600181928589013581550193019101611df8565b346102d85760003660031901126102d857604060195467ffffffffffffffff8251916001600160a01b038116835260a01c166020820152f35b346102d85760003660031901126102d8576000546001600160a01b0381163303611f13576001600160a01b0319600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d857611f56613341565b50600435600052600a6020526119f56119e16040600020546144a9565b346102d85760203660031901126102d857611f9b336000526005602052604060002054151590565b1561038657600435600052600a602052610384604060002054611fbe813361481c565b90614a9e565b346102d857612001611fe4611fd836613147565b949290939136916132fa565b602081519101209283600052600d6020528260406000205461442f565b9061200b8261338f565b9260005b83811061202457604051806119f5878261305c565b60019082600052600d602052612045611cf06040600020611cea8488613206565b61204f82886132d0565b5261205a81876132d0565b500161200f565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d85761209561209d913690600401612f59565b6107b36145d7565b60208151910120600052600c60205260406000205b80548015610384576000198101908111611203576111e36120d39183614cd9565b6120b2565b346102d8576120e63661317e565b90916120ff336000526005602052604060002054151590565b1561038657600052600a60205260406000205461211c813361481c565b9060ff600183015460e01c1661213181612f87565b61213757005b61216261215b6103849561214c3687836132fa565b602081519101209536916132fa565b84336148ac565b6149a3565b346102d85761218361217836613147565b9290939136916132fa565b602081519101208060005260186020526121a460406000209284845461442f565b916121ae836131ee565b936121bc6040519586612efc565b838552601f196121cb856131ee565b0160005b8181106122e457505060005b848110612243578560405180916020820160208352815180915260206040840192019060005b81811061220f575050500390f35b825180516001600160a01b0316855260209081015163ffffffff168186015286955060409094019390920191600101612201565b806001600160a01b0361226161225b60019486613206565b86614cd9565b90549060031b1c168560005260156020526040600281600020016000906001600160a01b0384168252602052206040519061229b82612ea7565b5490602060ff63ffffffff841693848452821c161515910152604051916122c183612ea7565b825260208201526122d282896132d0565b526122dd81886132d0565b50016121db565b6020906040516122f381612ea7565b6000815260008382015282828a010152016121cf565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576107b361233d913690600401612f59565b60208151910120600052600c6020526020604060002054604051908152f35b346102d85760203660031901126102d8576123756145d7565b600435600052600a602052604060002054806000526008602052604060002060ff600182015460e01c166123a881612f87565b1561037b57005b346102d8576123c66123c036612e02565b90613c53565b60405180916020820160208352815180915260206040840192019060005b8181106123f2575050500390f35b919350916020606060019263ffffffff60408851805184526001600160a01b0386820151168685015201511660408201520194019101918493926123e4565b346102d85761243f366130bc565b928291924211612571576001600160a01b0381169361246b856000526005602052604060002054151590565b1561255c5761247985614d97565b936001600160a01b0361248f838388888861473b565b16600052600360205260ff604060002054161561253b57858581600052600e6020526040600020905b815480156124f9576000198101908111611203576124d96124f49184614cd9565b90549060031b1c806000526008602052604060002090614a9e565b6124b8565b60008285808352600660205282604081205561251481614f63565b507f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b358380a4005b60405163335d4ce160e01b81529485946125589460048701613531565b0390fd5b8463c2dda3f960e01b60005260045260246000fd5b6001600160a01b0390631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760603660031901126102d85760043567ffffffffffffffff81116102d8576125c7903690600401612f59565b6125cf613134565b6044359182151583036102d857610384936125e86145d7565b613985565b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d85761261e903690600401613103565b6024359167ffffffffffffffff83116102d857612642610384933690600401612f59565b92909161356d565b346102d85760203660031901126102d8576001600160a01b0361266b612e59565b1660005260146020526119f56112f761268e60406000206040519283809261324d565b604051918291602083526020830190612e18565b346102d8576126b0366130bc565b8293924211612748576001600160a01b0383166126da816000526005602052604060002054151590565b15612734576126e890614d97565b916001600160a01b036126fe838386898961473b565b16600052600360205260ff604060002054161561271757005b6125589260405195869563335d4ce160e01b875260048701613531565b63c2dda3f960e01b60005260045260246000fd5b836001600160a01b0384631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760203660031901126102d8576001600160a01b0361278f612e59565b6127976145d7565b16600052600b60205260406000205b80548015610384576000198101908111611203576111e36127c79183614cd9565b6127a6565b346102d85760403660031901126102d8576127e5612e59565b60243567ffffffffffffffff811681036102d857610384916128056145d7565b6133fe565b346102d85761282761281b36612e02565b81601a9392935461442f565b90612831826131ee565b9161283f6040519384612efc565b808352601f1961284e826131ee565b0160005b8181106129e1575050601a54909160005b83811061290f578460405160208101916020825280518093526040820192602060408260051b85010192019060005b81811061289f5784840385f35b909192603f1985820301865283519081519160038310156128f9576128ea82606060406020959460019787965263ffffffff8682015116868501520151918160408201520190612e18565b95019601910194919094612892565b634e487b7160e01b600052602160045260246000fd5b6129198183613206565b6000848210156129cd57601a90526040519060011b7f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e01600061295b83612e8b565b81549060ff82169060038210156129b95750835260081c63ffffffff16602083015260405160019392916129989082906112f7908290880161324d565b60408201526129a782886132d0565b526129b281876132d0565b5001612863565b80634e487b7160e01b602492526021600452fd5b80634e487b7160e01b602492526032600452fd5b6020906040516129f081612e8b565b600081526000838201526060604082015282828801015201612852565b346102d85760803660031901126102d857612a26612e59565b60243567ffffffffffffffff81116102d857612a5a91612a4d612a60923690600401612f59565b93906044359436916132fa565b9061448a565b90816000526009602052612a7c6064358260406000205461442f565b90612a868261338f565b9260005b838110612a9f57604051806119f5878261305c565b600190826000526009602052612ac0611cf06040600020611cea8488613206565b612aca82886132d0565b52612ad581876132d0565b5001612a8a565b346102d85760003660031901126102d8576119f561268e612f1e565b346102d857612b15612b0936612e02565b8160049392935461442f565b612b1e816131ee565b91612b2c6040519384612efc565b818352612b38826131ee565b602084019290601f19013684376004549160005b828110612ba15784866040519182916020830190602084525180915260408301919060005b818110612b7f575050500390f35b82516001600160a01b0316845285945060209384019390920191600101612b71565b612bab8183613206565b6000858210156129cd57600490527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015460008190526006602052600191906001600160a01b0316612bfd82896132d0565b5201612b4c565b346102d85760203660031901126102d8576020612c3e6001600160a01b03612c2a612e59565b166000526005602052604060002054151590565b6040519015158152f35b346102d857612c65612c5936612e02565b8160169392935461442f565b612c6e816131ee565b91612c7c6040519384612efc565b818352601f19612c8b836131ee565b0160005b818110612dcf575050601654919060005b828110612d3e57846040518091602082016020835281518091526040830190602060408260051b8601019301916000905b828210612ce057505050500390f35b919360019193955060208091603f1989820301855287519081518152606080612d16858501516080878601526080850190612e18565b9363ffffffff6040820151166040850152015115159101529601920192018594939192612cd1565b612d488183613206565b6000858210156129cd579060208260166001959452200160ff604060009254928381526015602052206112f7612d97868301549260405195612d8987612e6f565b86526040519283809261324d565b602084015263ffffffff8116604084015260201c1615156060820152612dbd82886132d0565b52612dc881876132d0565b5001612ca0565b602090604051612dde81612e6f565b60008152606083820152600060408201526000606082015282828801015201612c8f565b60409060031901126102d8576004359060243590565b919082519283825260005b848110612e44575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612e23565b600435906001600160a01b03821682036102d857565b6080810190811067ffffffffffffffff821117610f9f57604052565b6060810190811067ffffffffffffffff821117610f9f57604052565b6040810190811067ffffffffffffffff821117610f9f57604052565b60a0810190811067ffffffffffffffff821117610f9f57604052565b610140810190811067ffffffffffffffff821117610f9f57604052565b90601f8019910116810190811067ffffffffffffffff821117610f9f57604052565b60405190612f2d604083612efc565b601a82527f576f726b666c6f77526567697374727920322e302e302d6465760000000000006020830152565b9181601f840112156102d85782359167ffffffffffffffff83116102d857602083818601950101116102d857565b600211156128f957565b61305991815181526001600160a01b03602083015116602082015267ffffffffffffffff60408301511660408201526060820151612fce81612f87565b606082015261012061304761303361302161300f612ffd60808801516101406080890152610140880190612e18565b60a088015187820360a0890152612e18565b60c087015186820360c0880152612e18565b60e086015185820360e0870152612e18565b610100850151848203610100860152612e18565b92015190610120818403910152612e18565b90565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061308f57505050505090565b90919293946020806130ad600193603f198682030187528951612f91565b97019301930191939290613080565b60606003198201126102d8576004356001600160a01b03811681036102d85791602435916044359067ffffffffffffffff82116102d8576130ff91600401612f59565b9091565b9181601f840112156102d85782359167ffffffffffffffff83116102d8576020808501948460051b0101116102d857565b6024359063ffffffff821682036102d857565b60606003198201126102d8576004359067ffffffffffffffff82116102d85761317291600401612f59565b90916024359060443590565b9060406003198301126102d857600435916024359067ffffffffffffffff82116102d8576130ff91600401612f59565b9060406003198301126102d8576004356001600160a01b03811681036102d857916024359067ffffffffffffffff82116102d8576130ff91600401612f59565b67ffffffffffffffff8111610f9f5760051b60200190565b9190820180921161120357565b90600182811c92168015613243575b602083101461322d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613222565b6000929181549161325d83613213565b80835292600181169081156132b3575060011461327957505050565b60009081526020812093945091925b838310613299575060209250010190565b600181602092949394548385870101520191019190613288565b915050602093945060ff929192191683830152151560051b010190565b80518210156132e45760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b92919267ffffffffffffffff8211610f9f5760405191613324601f8201601f191660200184612efc565b8294818452818301116102d8578281602093846000960137010152565b6040519061334e82612edf565b6060610120836000815260006020820152600060408201526000838201528260808201528260a08201528260c08201528260e0820152826101008201520152565b90613399826131ee565b6133a66040519182612efc565b82815280926133b7601f19916131ee565b019060005b8281106133c857505050565b6020906133d3613341565b828285010152016133bc565b6013548110156132e457601360005260206000209060011b0190600090565b90601954906001600160a01b038216906001600160a01b0367ffffffffffffffff8460a01c16941693828514948580966134f0575b6134e857806080957fc0c3ee74e6d6070ee9c493e8b4f0477d2e66600f22997a4e073288d38d65933b97156134d3575b505067ffffffffffffffff831692828403613492575b50604051938452602084015260408301526060820152a1565b7fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b6019549260a01b1691161760195538613479565b6001600160a01b031916176019558038613463565b505050505050565b508167ffffffffffffffff841614613433565b9190820391821161120357565b908060209392818452848401376000828201840152601f01601f1916010190565b90926080926001600160a01b036130599795168352602083015260408201528160608201520191613510565b91908110156132e45760051b0190565b929181156106695761358c336000526005602052604060002054151590565b156103865761359c3684836132fa565b6020815191012092600091825b848110613725575063ffffffff8316156134e8576135c89136916132fa565b90836000526015602052604060002060018101549060ff8260201c161561370357600201906001600160a01b0333166000528160205260ff60406000205460201c166000146136ef57506001600160a01b03331660005260205263ffffffff806136578160406000205416935b3360005260106020526040600020886000526020528260406000205416614892565b92169116116136d1575060005b8181106136715750505050565b8061367f600192848761355d565b35600052600a6020526040600020548060005260086020528460406000208460ff8183015460e01c166136b181612f87565b146136c0575b50505001613664565b6136c9926149a3565b3884816136b7565b6125589060405191829163038857ff60e01b8352336004840161446a565b63ffffffff91506136578280921693613635565b60405163393f328760e11b815260206004820152806125586024820187612e18565b9261373184868961355d565b35600052600a60205260ff600161374d6040600020543361481c565b015460e01c1661375c81612f87565b1561377f5763ffffffff1663ffffffff8114611203576001809101935b016135a9565b92600190613779565b818110613793575050565b60008155600101613788565b9190601f81116137ae57505050565b6137da926000526020600020906020601f840160051c830193106137dc575b601f0160051c0190613788565b565b90915081906137cd565b90601a5468010000000000000000811015610f9f5760018101601a556000601a548210156129cd57601a90526000929060011b7f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e018151600381101561394c5760409160019160ff825491168060ff19831617835564ffffffff00602087015160081b169164ffffffffff191617178155019101519283519067ffffffffffffffff82116139385761389c82610cbc8554613213565b602090601f83116001146138da57906138cb939495836138cf5750508160011b916000199060031b1c19161790565b9055565b015190503880610cde565b90601f198316848352818320925b81811061392057509583600195969710613907575b505050811b019055565b015160001960f88460031b161c191690553880806138fd565b9192602060018192868b0151815501940192016138e8565b80634e487b7160e01b602492526041600452fd5b602485634e487b7160e01b81526021600452fd5b9161397e60209263ffffffff92969596604086526040860191613510565b9416910152565b90919392936139953684846132fa565b6020815191012090600086600014613be65750905b80600052601560205260406000209560018701908154901515908160ff8260201c161515149081613bd3575b50613bc95787546139e681613213565b15613a97575b50815464ffffffffff1916602091821b64ff00000000161763ffffffff85169081179092556040805191820193909352808301919091529081529394507f4495c6e60e22d8ab3b00a16160c4954fb24d2d51d48044a0d292dddc3161b73193613a929190613a8690613a5f606082612efc565b60405190613a6c82612e8b565b6000825263ffffffff4216602083015260408201526137e6565b60405193849384613960565b0390a1565b67ffffffffffffffff8711610f9f5786613ab3613ab992613213565b8a61379f565b600097601f8711600114613b3a5791613a92949391613a8693613b1589807f4495c6e60e22d8ab3b00a16160c4954fb24d2d51d48044a0d292dddc3161b7319c9d600091613b2f57508160011b916000199060031b1c19161790565b90555b613b2183614ead565b5091939450918897506139ec565b90508a013538611dab565b8089526020892098601f198816815b818110613bb15750917f4495c6e60e22d8ab3b00a16160c4954fb24d2d51d48044a0d292dddc3161b731999a613a92979694928a613a86979510613b97575b5050600189811b019055613b18565b89013560001960038c901b60f8161c191690553880613b88565b888301358c556001909b019a60209283019201613b49565b5050505050509050565b905063ffffffff808616911614386139d6565b9050906139aa565b90613bf8826131ee565b613c056040519182612efc565b8281528092613c16601f19916131ee565b019060005b828110613c2757505050565b602090604051613c3681612e8b565b600081526000838201526000604082015282828501015201613c1b565b90613c61908260135461442f565b908115613d5857613c7182613bee565b91600091825b828110613cce5750508110613c8a575090565b613c9381613bee565b9160005b828110613ca45750505090565b80613cb1600192846132d0565b51613cbc82876132d0565b52613cc781866132d0565b5001613c97565b613ce0613cdb8284613206565b6133df565b50600181015463ffffffff8160a01c1690428211613d04575b505050600101613c77565b6001600160a01b039060409794975193613d1d85612e8b565b5484521660208301526040820152613d3582876132d0565b52613d4081866132d0565b50600019811461120357600180910193903880613cf9565b50506040516000613d6a602083612efc565b81526000805b818110613d7c57505090565b602090604051613d8b81612e8b565b600081526000838201526000604082015282828601015201613d70565b92909391844211613f7a576001600160a01b038416613dd4816000526005602052604060002054151590565b613f4d5781600052600760205260ff60406000205416613f1d57600090613e30613e4a613dff612f1e565b6040519283916020830195878752604084015246606084015230608084015260e060a0840152610100830190612e18565b8a60c08301528660e083015203601f198101835282612efc565b5190207f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c52613e8b603c8220613e853687876132fa565b90614dfa565b90919260048310156129b95782613ee5575050506001600160a01b031660009081526003602052604090205460ff1615613ec6575050505050565b90612558929160405195869563335d4ce160e01b875260048701613531565b5060405163d36ab6b960e01b81526060600482015291829160ff613f0d606485018a8a613510565b9216602484015260448301520390fd5b7f77a338580000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7fd9a5f5ca0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b846001600160a01b03857f502d038700000000000000000000000000000000000000000000000000000000600052166004524260245260445260646000fd5b939161305995936001600160a01b03613fe093168652606060208701526060860191613510565b926040818503910152613510565b9091614007336000526005602052604060002054151590565b156103865781600052600a60205260406000205490614026823361481c565b60ff600182015460e01c1661403a81612f87565b6141065761406f908360005260116020526040600020549283600052601560205261407660406000206040519485809261324d565b0384612efc565b6140813682896132fa565b602081519101208094146140fd576140d46140e89483876140c66140f8967f9b5361a5258ef6ac8039fd2d2ac276734695219cfd870711e7922c236e5db16d9a61463a565b61216261215b36878e6132fa565b604051938493604085526040850190612e18565b9083820360208501523397613510565b0390a3565b50505050505050565b7fd74915a80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040519061413d82612ec3565b81608063ffffffff60025460ff8116845260ff8160081c16602085015260ff8160101c16604085015261ffff8160181c16606085015260281c16910152565b926141883684846132fa565b60208151910120948560005260156020526040600020600181019060ff825460201c161561437f57600201604060006001600160a01b03891681528260205220926000146142f157505463ffffffff838116911681116142c757815460ff8160201c16156000146142675750815464ffffffffff1916176401000000001790556000948552601860205260409094206001600160a01b03909316937f945de380da34dd2a3da003b018b92eb5714e63dbcc911e3caef8307407c82324936142629190614255908790614f07565b5060405193849384613960565b0390a2565b819392959694975063ffffffff1614156000146134e8577f945de380da34dd2a3da003b018b92eb5714e63dbcc911e3caef8307407c82324946001600160a01b03946142629363ffffffff19825416179055604051948594169684613960565b7feabc4fd90000000000000000000000000000000000000000000000000000000060005260046000fd5b959692505060ff909392935460201c1615614378577f6b349f5a70df2e3faf5fb1a615930e6816698828af7279d4d231f0edc013d849936001600160a01b0386166000526020526000604081205560005260186020526143606001600160a01b0360406000209516809561502d565b50614262604051928392602084526020840191613510565b5050505050565b60405163393f328760e11b81526020600482015280612558602482018989613510565b91906143af9136916132fa565b6020815191012060005260156020526001600160a01b03604060002091166000526002810160205260406000206020604051916143eb83612ea7565b549160ff63ffffffff841693848352831c161515918291015261441657506001015463ffffffff1690565b905090565b356001600160a01b03811681036102d85790565b808210156144625782816144466130599585613206565b11156144525750613503565b61445d915082613206565b613503565b505050600090565b6040906001600160a01b0361305994931681528160208201520190612e18565b906144a361082a9160405192839160208301958661446a565b51902090565b6144b1613341565b81600052600860205260406000206001810154926001600160a01b0384169283156145cf57509160066145b4836112f79567ffffffffffffffff6145c696549860ff8160e01c1692600052601160205260406000205460005260156020526040600020966040519a6145228c612edf565b8b5260208b015260a01c16604089015261453b81612f87565b6060880152604051614554816112f7816002860161324d565b608088015260405161456d816112f7816003860161324d565b60a0880152604051614586816112f7816004860161324d565b60c088015260405161459f816112f7816005860161324d565b60e08801526112f7604051809481930161324d565b6101008501526040519283809261324d565b61012082015290565b935050505090565b6001600160a01b036001541633036145eb57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b909161462c6130599360408452604084019061324d565b91602081840391015261324d565b7ff764e70143a953f513d351195b60c30d5fdaaca38edb60b262997f551e48868960018301916001600160a01b038354947c010000000000000000000000000000000000000000000000000000000060ff60e01b1987161785558260005260116020526146d0826040600020549716938760028401956146ca6040516146c4816112f7818c61324d565b8261448a565b92614cf1565b61471a8154604051908860208301526040820152604081526146f3606082612efc565b6040519061470082612e8b565b6002825263ffffffff4216602083015260408201526137e6565b5493541693600052601560205260406000206140f860405192839283614615565b916147a1906147889261474c612f1e565b916040519485936001600160a01b03602086019860018a5216604086015246606086015230608086015260e060a0860152610100850190612e18565b9160c084015260e083015203601f198101835282612efc565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c526147de603c600020613e853685856132fa565b60048295939510156128f957816147f6575050505090565b60ff613f0d60405195869563d36ab6b960e01b8752606060048801526064870191613510565b9060005260086020526040600020906001600160a01b03600183015416908115614868576001600160a01b0316809103614854575090565b6331ee6dc760e01b60005260045260246000fd5b7f871e01b20000000000000000000000000000000000000000000000000000000060005260046000fd5b9063ffffffff8091169116019063ffffffff821161120357565b90806000526015602052604060002060018101549060ff8260201c161561498157600201906001600160a01b0384166000528160205260ff60406000205460201c1660001461497357506001600160a01b03831660005260205263ffffffff60406000205416905b6001600160a01b038316600052601060205260406000209060005260205263ffffffff8061494a60018260406000205416614892565b9216911611614957575050565b61255860405192839263038857ff60e01b84526004840161446a565b63ffffffff91501690614914565b60405163393f328760e11b815260206004820152806125586024820188612e18565b7f7fdfd5efa814f8c90ef997a11cfbb29660e5af33312debb9c4898169a73f824a906001600160a01b0360018401936149fa82865416938760028401956149f46040516146c4816112f7818c61324d565b92614c35565b60ff60e01b19855416855561471a815460405190886020830152604082015260408152614a28606082612efc565b60405190614a3582612e8b565b6001825263ffffffff4216602083015260408201526137e6565b614a598154613213565b9081614a63575050565b81601f60009311600114614a75575055565b81835260208320614a9191601f0160051c810190600101613788565b8082528160208120915555565b906146c4907f48f05f657e3e9a02bfe546c4d3961f08b1f9a0f9798b13fcbc2231173b1ecd94614bbd614b2c614bcb6001600160a01b036001860195865460ff8a848316614afa6112f7600287019d8e6040519283809261324d565b938491836000526011602052604060002054948592836000526015602052614b3360406000206040519d8e809261324d565b038d612efc565b60e01c16614b4081612f87565b15614c23575b50505050600052600d602052614b608a604060002061502d565b5082885416600052600e602052614b7b8a604060002061502d565b506000526009602052614b9289604060002061502d565b508054600052600a602052600060408120555495541695604051938493604085526040850190612e18565b90838203602085015261324d565b0390a36000526008602052600660406000206000815560006001820155614bf460028201614a4f565b614c0060038201614a4f565b614c0c60048201614a4f565b614c1860058201614a4f565b01614a598154613213565b614c2c93614cf1565b8a828238614b46565b9192906001600160a01b03168060005260106020526040600020846000526020526040600020600163ffffffff8254160163ffffffff81116112035763ffffffff1663ffffffff1982541617905583600052600c602052614c9a836040600020614f07565b50600052600b602052614cb1826040600020614f07565b50600052600f602052614cc8816040600020614f07565b506000526011602052604060002055565b80548210156132e45760005260206000200190600090565b9291906001600160a01b031680600052600b602052614d1484604060002061502d565b5081600052600c602052614d2c84604060002061502d565b506000526010602052604060002090600052602052604060002060001963ffffffff8254160163ffffffff81116112035763ffffffff1663ffffffff19825416179055600052600f602052614d8581604060002061502d565b50600052601160205260006040812055565b80600052600660205260406000205490811580614de4575b614db7575090565b7f02b566860000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5080600052600560205260406000205415614daf565b8151919060418303614e2b57614e2492506020820151906060604084015193015160001a906150ea565b9192909190565b505060009160029190565b80600052600560205260406000205415600014614ea75760045468010000000000000000811015610f9f57614e8e614e778260018594016004556004614cd9565b819391549060031b91821b91600019901b19161790565b9055600454906000526005602052604060002055600190565b50600090565b80600052601760205260406000205415600014614ea75760165468010000000000000000811015610f9f57614eee614e778260018594016016556016614cd9565b9055601654906000526017602052604060002055600190565b6000828152600182016020526040902054614f5c5780549068010000000000000000821015610f9f5782614f45614e77846001809601855584614cd9565b905580549260005201602052604060002055600190565b5050600090565b6000818152600560205260409020548015614f5c5760001981018181116112035760045460001981019190821161120357818103614ff3575b5050506004548015614fdd5760001901614fb7816004614cd9565b8154906000199060031b1b19169055600455600052600560205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b615015615004614e77936004614cd9565b90549060031b1c9283926004614cd9565b90556000526005602052604060002055388080614f9c565b90600182019181600052826020526040600020548015156000146150e1576000198101818111611203578254600019810191908211611203578181036150aa575b50505080548015614fdd5760001901906150888282614cd9565b8154906000199060031b1b191690555560005260205260006040812055600190565b6150ca6150ba614e779386614cd9565b90549060031b1c92839286614cd9565b90556000528360205260406000205538808061506e565b50505050600090565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615173579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15615167576000516001600160a01b0381161561515b5790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fea164736f6c634300081a000a", } var WorkflowRegistryABI = WorkflowRegistryMetaData.ABI diff --git a/gethwrappers/workflow/generated/workflow_registry_wrapper_v2_dev/workflow_registry_wrapper_v2_dev.go b/gethwrappers/workflow/generated/workflow_registry_wrapper_v2_dev/workflow_registry_wrapper_v2_dev.go index ede1c34fa1..ec93a9d217 100644 --- a/gethwrappers/workflow/generated/workflow_registry_wrapper_v2_dev/workflow_registry_wrapper_v2_dev.go +++ b/gethwrappers/workflow/generated/workflow_registry_wrapper_v2_dev/workflow_registry_wrapper_v2_dev.go @@ -77,7 +77,7 @@ type WorkflowRegistryWorkflowMetadataView struct { var WorkflowRegistryMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"activateWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminBatchPauseWorkflows\",\"inputs\":[{\"name\":\"workflowIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminPauseAllByDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminPauseAllByOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"adminPauseWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowlistRequest\",\"inputs\":[{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchActivateWorkflows\",\"inputs\":[{\"name\":\"workflowIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"batchPauseWorkflows\",\"inputs\":[{\"name\":\"workflowIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"canLinkOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"canUnlinkOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getAllowlistedRequests\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"allowlistedRequests\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.OwnerAllowlistedRequest[]\",\"components\":[{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCapabilitiesRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structWorkflowRegistry.Config\",\"components\":[{\"name\":\"maxNameLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxTagLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxUrlLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"maxAttrLen\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maxExpiryLen\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDonConfigs\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.DonConfigView[]\",\"components\":[{\"name\":\"donHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"family\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"donLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"defaultUserLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEvents\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.EventRecord[]\",\"components\":[{\"name\":\"eventType\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.EventType\"},{\"name\":\"timestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLinkedOwners\",\"inputs\":[{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"owners\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxWorkflowsPerDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"maxWorkflows\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"defaultUserLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMaxWorkflowsPerUserDON\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUserDONOverrides\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.UserOverrideView[]\",\"components\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"limit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflow\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"workflow\",\"type\":\"tuple\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowById\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"workflow\",\"type\":\"tuple\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowListByDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView[]\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowListByOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView[]\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowListByOwnerAndName\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"start\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"limit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"list\",\"type\":\"tuple[]\",\"internalType\":\"structWorkflowRegistry.WorkflowMetadataView[]\",\"components\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"createdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWorkflowOwnerConfig\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isAllowedSigner\",\"inputs\":[{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOwnerLinked\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isRequestAllowlisted\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"linkOwner\",\"inputs\":[{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauseWorkflow\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCapabilitiesRegistry\",\"inputs\":[{\"name\":\"registry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainSelector\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConfig\",\"inputs\":[{\"name\":\"nameLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"tagLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"urlLen\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"attrLen\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"expiryLen\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setDONLimit\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"donLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"userDefaultLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setUserDONOverride\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"userLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"enabled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWorkflowOwnerConfig\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"config\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalActiveWorkflowsByOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalActiveWorkflowsOnDON\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalAllowlistedRequests\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalEvents\",\"inputs\":[],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalLinkedOwners\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"typeAndVersion\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unlinkOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAllowedSigners\",\"inputs\":[{\"name\":\"signers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"allowed\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateWorkflowDONFamily\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"newDonFamily\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upsertWorkflow\",\"inputs\":[{\"name\":\"workflowName\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"tag\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"binaryUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"configUrl\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"attributes\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"keepAlive\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AllowedSignersUpdated\",\"inputs\":[{\"name\":\"signers\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"},{\"name\":\"allowed\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CapabilitiesRegistryUpdated\",\"inputs\":[{\"name\":\"oldAddr\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAddr\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"oldChainSelector\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newChainSelector\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfigUpdated\",\"inputs\":[{\"name\":\"maxNameLen\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"maxTagLen\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"maxUrlLen\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"},{\"name\":\"maxAttrLen\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"},{\"name\":\"maxExpiryLen\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DONLimitSet\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"donLimit\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"},{\"name\":\"userDefaultLimit\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipLinkUpdated\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"added\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferRequested\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RequestAllowlisted\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UserDONLimitSet\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"limit\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UserDONLimitUnset\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowActivated\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowDeleted\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowDonFamilyUpdated\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"oldDonFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"newDonFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowOwnerConfigUpdated\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"config\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowPaused\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowRegistered\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"enumWorkflowRegistry.WorkflowStatus\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WorkflowUpdated\",\"inputs\":[{\"name\":\"oldWorkflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newWorkflowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"workflowName\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AttributesTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BinaryURLRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotWorkflowOwner\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CannotTransferToSelf\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotUpdateDONFamilyForPausedWorkflows\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DonLimitNotSet\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"EmptyUpdateBatch\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"EnumerableMapNonexistentKey\",\"inputs\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"InvalidExpiryTimestamp\",\"inputs\":[{\"name\":\"requestDigest\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"maxAllowed\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"type\":\"error\",\"name\":\"InvalidOwnershipLink\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"type\":\"error\",\"name\":\"InvalidSignature\",\"inputs\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"recoverErrorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"recoverErrorArg\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"LinkOwnerRequestExpired\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"currentTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"MaxWorkflowsPerDONExceeded\",\"inputs\":[{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"MaxWorkflowsPerUserDONExceeded\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"donFamily\",\"type\":\"string\",\"internalType\":\"string\"}]},{\"type\":\"error\",\"name\":\"MustBeProposedOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyCallableByOwner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnerCannotBeZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnershipLinkAlreadyExists\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnershipLinkDoesNotExist\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnershipProofAlreadyUsed\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"proof\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"URLTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"UnlinkOwnerRequestExpired\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"currentTime\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiryTimestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"UserDONDefaultLimitExceedsDONLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UserDONOverrideExceedsDONLimit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowDoesNotExist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowIDAlreadyExists\",\"inputs\":[{\"name\":\"workflowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WorkflowNameRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowNameTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"WorkflowTagRequired\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WorkflowTagTooLong\",\"inputs\":[{\"name\":\"provided\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxAllowed\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"ZeroAddressNotAllowed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroWorkflowIDNotAllowed\",\"inputs\":[]}]", - Bin: "0x60803460a8573315609757600180546001600160a01b0319163317905560a081016001600160401b03811182821017608157604090815280825260208083015260c882820152610400606083015262093a80608090920191909152600280546001600160481b03191667093a800400c82040179055516152c990816100ae8239f35b634e487b7160e01b600052604160045260246000fd5b639b15e16f60e01b60005260046000fd5b600080fdfe610140604052600436101561001357600080fd5b60003560e01c806301b7690514612e0a5780630987294c14612dc657806317e0edfc14612cba578063181f5a7714612c9e5780631c08b00a14612bcf5780631c71682c146129cc578063245b8e4e1461298e578063274e00e014612930578063289bd108146128645780632afc41301461280c5780632c50a955146127af57806339d68c6a1461264e57806339e43234146125cc5780633c17181b146125795780633c54b50b146125265780634b6d2e5b14612384578063530979d6146122f5578063556dbd0d1461227e57806361043193146121e1578063695e13401461219057806370ae26401461215a57806379ba5097146120c1578063865ec9e0146120885780638b42a96d14611f3a5780638c42ffc514611e865780638da5cb5b14611e5f57806394ea0da614611c84578063952bb98414611c39578063a0b8a4fe14611c1b578063a408901614611b78578063a6008f2014611a56578063a7d01858146119af578063afbb240114611998578063b377bfc514610b0f578063b668435f14610900578063ba870686146108e2578063bae5c29a14610869578063bdf6b4ff146107fd578063be674333146107d6578063bf2a0d9314610783578063c3f909d4146106d2578063cabb9e7a14610693578063d8b80738146105b1578063d8e4a72414610457578063dc101969146103b9578063de49b95f1461039b578063e690f33214610317578063ea32308b146102dd5763f2fde38b1461023857600080fd5b346102d85760203660031901126102d8576001600160a01b03610259613018565b610261614656565b163381146102ae57806001600160a01b031960005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b346102d85760203660031901126102d8576001600160a01b036102fe613018565b16600052600b6020526020604060002054604051908152f35b346102d85760203660031901126102d85761033f336000526005602052604060002054151590565b1561038657600435600052600a60205260406000205461035f813361489b565b600160ff8183015460e01c1661037481613146565b0361037b57005b610384916146b9565b005b63c2dda3f960e01b6000523360045260246000fd5b346102d85760003660031901126102d8576020601454604051908152f35b346102d85760603660031901126102d85760443560243567ffffffffffffffff82116102d8576103fd6103f26001933690600401613118565b908360043533613be5565b3360005260066020528060406000205561041633614f73565b5080600052600760205260406000208260ff19825416179055337f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b35600080a4005b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d8576104889036906004016132c2565b602435918215158093036102d85761049e614656565b60ff831660005b83811061052f57505060405191806040840160408552526060830191906000905b8082106104fc577f861d38caf3055a11344d9f540d5ab4e5c38d751dfcbd1156aed92b71805e13168580868960208301520390a1005b9091928335906001600160a01b03821682036102d857602080916001600160a01b036001941681520194019201906104c6565b6001600160a01b0361054a61054583878761374b565b61449a565b161561058757806001600160a01b03610569610545600194888861374b565b16600052600360205260406000208360ff19825416179055016104a5565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576105e29036906004016132c2565b8015610669576105ff336000526005602052604060002054151590565b156103865760005b81811061061057005b8061061e600192848661374b565b35600052600a602052604060002054610637813361489b565b8360ff8183015460e01c1661064b81613146565b03610659575b505001610607565b610662916146b9565b8480610651565b7faea36d000000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d8576001600160a01b036106b4613018565b166000526003602052602060ff604060002054166040519015158152f35b346102d85760003660031901126102d857600060806040516106f381613082565b828152826020820152826040820152826060820152015260a060405161071881613082565b63ffffffff60025461ffff60ff82169384815260ff60208201818560081c168152816040840191818760101c1683528760806060870196888a60181c168852019760281c16875260405198895251166020880152511660408601525116606084015251166080820152f35b346102d85760603660031901126102d85760043567ffffffffffffffff81116102d8576107b7610384913690600401613118565b6107bf61339a565b906107c86133ad565b926107d1614656565b614117565b346102d85760206107ef6107e93661335a565b91613f6d565b63ffffffff60405191168152f35b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d857610831610838913690600401613118565b36916134cc565b6020815191012060005260166020526040600181600020015463ffffffff825191818116835260201c166020820152f35b346102d85760403660031901126102d857610882613018565b6040516108bf816108b160208201946024359086602090939291936001600160a01b0360408201951681520152565b03601f1981018352826130bb565b5190206000526013602052602063ffffffff604060002054166040519042108152f35b346102d85760003660031901126102d8576020601b54604051908152f35b346102d85760803660031901126102d857610919613018565b60243567ffffffffffffffff81116102d857610939903690600401613118565b906109426133ad565b916064359283151584036102d857610958614656565b6109633683856134cc565b602081519101208060005260166020526040600020600181019063ffffffff82541615610ae857600201604060006001600160a01b038a168152826020522096600014610a6c57505463ffffffff92831692168211610a42577f945de380da34dd2a3da003b018b92eb5714e63dbcc911e3caef8307407c823249464010000000064ff00000000198254161781558263ffffffff198254161790556000526019602052610a1f6001600160a01b03604060002096168096615044565b50610a376040519384936040855260408501916136fe565b9060208301520390a2005b7feabc4fd90000000000000000000000000000000000000000000000000000000060005260046000fd5b919250507f6b349f5a70df2e3faf5fb1a615930e6816698828af7279d4d231f0edc013d84994506001600160a01b038616600052602052600060408120556000526019602052610acb6001600160a01b0360406000209516809561516a565b50610ae36040519283926020845260208401916136fe565b0390a2005b60405163393f328760e11b81526020600482015280610b0b60248201888a6136fe565b0390fd5b346102d8576101203660031901126102d85760043567ffffffffffffffff81116102d857610b41903690600401613118565b610100526101205260243567ffffffffffffffff81116102d857610b69903690600401613118565b90600260643510156102d85760843567ffffffffffffffff81116102d857610b95903690600401613118565b9060e0529060a43567ffffffffffffffff81116102d857610bba903690600401613118565b9160c43567ffffffffffffffff81116102d857610bdb903690600401613118565b9560e43567ffffffffffffffff81116102d857610bfc903690600401613118565b929093610104359586151587036102d857610c24336000526005602052604060002054151590565b15610386576044351561196e57604435600052600a60205260406000205461193e5760025460ff8160101c16891561191457806118d7575b5061ffff8160181c16801515806118ce575b61189d575084156118735760ff8160081c168015158061186a575b6118395750610100511561180f5760ff1680151580611803575b6117cf57506040516020810190610cc8816108b1888761010051610120513389613df6565b5190209788600052600860205260406000206001600160a01b03600182015416801560001461144d575050610d0d610d073661010051610120516134cc565b33614509565b9a610d1b368c60e0516134cc565b6020815191012098156113c1575b610d34606435613146565b60643515611399575b604051978861012081011067ffffffffffffffff6101208b0111176111c257610dea899695610ddb8897610df9956101208a016040526044358a5260a0610dcf60208c019a338c5260408d0160c05267ffffffffffffffff421660c0515260608d019a610dab606435613146565b6064358c526080610dc33661010051610120516134cc565b9e019d8e5236916134cc565b9b019a8b5236916134cc565b9860c08c01998a5236916134cc565b9760e08a0198895236916134cc565b610100880160a05260a051528860005260086020526040600020965187556001600160a01b038060018901935116166001600160a01b031983541617825560c051517fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b8085549360a01b1616911617825551610e8081613146565b610e8981613146565b60ff60e01b197cff0000000000000000000000000000000000000000000000000000000083549260e01b16911617905560028501905180519067ffffffffffffffff82116111c257610ee582610edf85546133e5565b85613b9e565b602090601f831160011461133257610f16929160009183611327575b50508160011b916000199060031b1c19161790565b90555b518051600385019167ffffffffffffffff82116111c257610f3e82610edf85546133e5565b602090601f83116001146112c057610f6e9291600091836112b55750508160011b916000199060031b1c19161790565b90555b518051600484019167ffffffffffffffff82116111c257610f9682610edf85546133e5565b602090601f831160011461124e57610fc69291600091836111d85750508160011b916000199060031b1c19161790565b90555b518051600583019167ffffffffffffffff82116111c257610fee82610edf85546133e5565b602090601f83116001146111e35791806110239260069695946000926111d85750508160011b916000199060031b1c19161790565b90555b019360a0515194855167ffffffffffffffff81116111c2576110528161104c84546133e5565b84613b9e565b6020601f8211600114611158579080611086926110dc989960009261114d5750508160011b916000199060031b1c19161790565b90555b600052600960205261109f826040600020615044565b50604435600052600a60205281604060002055600052600d6020526110c8816040600020615044565b5033600052600e6020526040600020615044565b506110f56040519160608352606083019060e0516136fe565b611100606435613146565b606435602083015281810360408301527f74dc2e5bdab0a48c5e7d33c1eaad00066fd19c8d9f29d4c3a251711c0a0e9a093392806111486044359461010051610120516136fe565b0390a3005b015190508980610f01565b601f1982169783600052816000209860005b8181106111aa5750916110dc989991846001959410611191575b505050811b019055611089565b015160001960f88460031b161c19169055888080611184565b838301518b556001909a01996020938401930161116a565b634e487b7160e01b600052604160045260246000fd5b015190508a80610f01565b90601f1983169184600052816000209260005b81811061123657509160019391856006989796941061121d575b505050811b019055611026565b015160001960f88460031b161c19169055898080611210565b929360206001819287860151815501950193016111f6565b90601f1983169184600052816000209260005b81811061129d5750908460019594939210611284575b505050811b019055610fc9565b015160001960f88460031b161c19169055898080611277565b92936020600181928786015181550195019301611261565b015190508b80610f01565b90601f1983169184600052816000209260005b81811061130f57509084600195949392106112f6575b505050811b019055610f71565b015160001960f88460031b161c191690558a80806112e9565b929360206001819287860151815501950193016112d3565b015190508c80610f01565b90601f1983169184600052816000209260005b8181106113815750908460019594939210611368575b505050811b019055610f19565b015160001960f88460031b161c191690558b808061135b565b92936020600181928786015181550195019301611345565b6113b06113a9368d60e0516134cc565b8a33614943565b6113bc8c8a338d614d17565b610d3d565b9a999897969594939291908a600052600f60205260406000206080525b60805154801561143c5780600019810111611426576114066114219160001901608051614ddd565b90549060031b1c8060005260086020526040600020906146b9565b6113de565b634e487b7160e01b600052601160045260246000fd5b50909192939495969798999a610d29565b9294969850969a945097915033036117ba578454600052600a60205260006040812055604435600052600a602052604060002055835495604435855560038501916040516114a68161149f818761341f565b03826130bb565b602081519101206114b83684846134cc565b60208151910120036116f3575b50505060048301916040516114de8161149f818761341f565b602081519101206114f03684846134cc565b6020815191012003611623575b5050506006019067ffffffffffffffff81116111c2576115218161104c84546133e5565b6000601f82116001146115bf578190611553939495966000926115b45750508160011b916000199060031b1c19161790565b90555b61156e6040519260408452604084019060e0516136fe565b9082820360208401527f03d454e4bcb8ae5031ab165ca5f4161ebf48cfaf66d96cc490ba500a59a1e3223393806115af6044359561010051610120516136fe565b0390a4005b013590508680610f01565b601f198216958382526020822091805b88811061160b575083600195969798106115f1575b505050811b019055611556565b0135600019600384901b60f8161c191690558580806115e4565b909260206001819286860135815501940191016115cf565b67ffffffffffffffff82116111c25761164082610edf85546133e5565b600090601f831160011461168b5791806116759260069695946000926116805750508160011b916000199060031b1c19161790565b90555b9086806114fd565b013590508a80610f01565b8382526020822091601f198416815b8181106116db5750916001939185600698979694106116c1575b505050811b019055611678565b0135600019600384901b60f8161c191690558980806116b4565b9193602060018192878701358155019501920161169a565b67ffffffffffffffff82116111c25761171082610edf85546133e5565b600090601f83116001146117565761174092916000918361174b5750508160011b916000199060031b1c19161790565b90555b8780806114c5565b013590508b80610f01565b8382526020822091601f198416815b8181106117a25750908460019594939210611788575b505050811b019055611743565b0135600019600384901b60f8161c191690558a808061177b565b91936020600181928787013581550195019201611765565b6331ee6dc760e01b6000523360045260246000fd5b7f36a7c503000000000000000000000000000000000000000000000000000000006000526101005160045260245260446000fd5b50806101005111610ca3565b7f485b8ed40000000000000000000000000000000000000000000000000000000060005260046000fd5b857f436f97540000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808611610c89565b7f65cf28770000000000000000000000000000000000000000000000000000000060005260046000fd5b867f354f25140000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808711610c6e565b808a116118fd57808c1115610c5c578b6219aad560e31b60005260045260245260446000fd5b896219aad560e31b60005260045260245260446000fd5b7f9cd963cf0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f0d5354a40000000000000000000000000000000000000000000000000000000060005260443560045260246000fd5b7f315de7450000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d8576103846119a93661332a565b91613e2b565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576119e09036906004016132c2565b80156106695760005b8181106119f257005b80611a00600192848661374b565b35611a09614656565b600052600a602052604060002054806000526008602052604060002060ff8482015460e01c16611a3881613146565b15611a46575b5050016119e9565b611a4f916146b9565b8480611a3e565b346102d85760a03660031901126102d85760043560ff81168091036102d8576024359060ff8216908183036102d8576044359160ff8316908184036102d8576064359161ffff8316918284036102d8576084359663ffffffff8816948589036102d85764ffff00000060a09862ff00007f9c1a161a4cdd9b19a46f9660eee21b6394dc5aa70fc9e093dbb36d2c1786d7739b611af0614656565b896080604051611aff81613082565b8d81528960208201528a60408201528b6060820152015268ffffffff00000000006002549160281b169561ff0068ffffffff000000000019928d87199162ffffff191617169160081b1617169160101b16179160181b1617176002556040519485526020850152604084015260608301526080820152a1005b346102d85760603660031901126102d857611b91613018565b60243567ffffffffffffffff81116102d857611bb1903690600401613118565b916044359267ffffffffffffffff84116102d857611bfb611c03936108b1611be0611c17973690600401613118565b90611be9613513565b50604051958694602086019889613df6565b519020614528565b604051918291602083526020830190613150565b0390f35b346102d85760003660031901126102d8576020600454604051908152f35b346102d85760803660031901126102d857611c52613018565b6064359067ffffffffffffffff82116102d857611c76610384923690600401613118565b916044359060243590613be5565b346102d85760403660031901126102d857600435611ca061339a565b63ffffffff8060025460281c16911690428211801590611e43575b611e0f5750611cd7336000526005602052604060002054151590565b1561038657604080513360208201908152918101849052611cfb81606081016108b1565b519020600052601360205260406000208163ffffffff19825416179055604051611d248161304a565b82815260208101903382526040810190838252601454680100000000000000008110156111c257806001611d5b92016014556135b1565b611df95760016001600160a01b039291839251815501935116166001600160a01b0319835416178255517fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff77ffffffff000000000000000000000000000000000000000083549260a01b1691161790556040519081527ff69135e4f80a25991d2f877c365c191c51ec3c0063ecb9299d314cd9da4880d160203392a3005b634e487b7160e01b600052600060045260246000fd5b917f7ffd3b8f0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b508015158015611cbb575080611e5942846136f1565b11611cbb565b346102d85760003660031901126102d85760206001600160a01b0360015416604051908152f35b346102d85760603660031901126102d857611e9f613018565b6001600160a01b0360243591169081600052600e602052611ec8604435826040600020546144ae565b90611ed282613561565b9260005b838110611eeb5760405180611c17878261321b565b60019082600052600e602052611f1e611f126040600020611f0c84886133d8565b90614ddd565b90549060031b1c614528565b611f2882886134a2565b52611f3381876134a2565b5001611ed6565b346102d8576001600160a01b03611f503661335a565b929091611f5b614656565b169081600052601560205260406000209267ffffffffffffffff81116111c257611f8f81611f8986546133e5565b86613b9e565b600093601f821160011461200657611fe182807f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f139697600091611ffb575b508160011b916000199060031b1c19161790565b90555b610ae36040519283926020845260208401916136fe565b905085013588611fcd565b80855260208520601f19831695805b8781106120705750837f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f13969710612056575b5050600182811b019055611fe4565b840135600019600385901b60f8161c191690558580612047565b90916020600181928589013581550193019101612015565b346102d85760003660031901126102d8576040601a5467ffffffffffffffff8251916001600160a01b038116835260a01c166020820152f35b346102d85760003660031901126102d8576000546001600160a01b0381163303612130576001600160a01b0319600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d857612173613513565b50600435600052600a602052611c17611c03604060002054614528565b346102d85760203660031901126102d8576121b8336000526005602052604060002054151590565b1561038657600435600052600a6020526103846040600020546121db813361489b565b90614b80565b346102d85761221e6122016121f5366132f3565b949290939136916134cc565b602081519101209283600052600d602052826040600020546144ae565b9061222882613561565b9260005b8381106122415760405180611c17878261321b565b60019082600052600d602052612262611f126040600020611f0c84886133d8565b61226c82886134a2565b5261227781876134a2565b500161222c565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576122b26122ba913690600401613118565b610831614656565b60208151910120600052600c60205260406000205b80548015610384576000198101908111611426576114066122f09183614ddd565b6122cf565b346102d8576123033661332a565b909161231c336000526005602052604060002054151590565b1561038657600052600a602052604060002054612339813361489b565b9060ff600183015460e01c1661234e81613146565b61235457005b61237f612378610384956123693687836134cc565b602081519101209536916134cc565b8433614943565b614a85565b346102d8576123a0612395366132f3565b9290939136916134cc565b602081519101208060005260196020526123c16040600020928484546144ae565b916123cb836133c0565b936123d960405195866130bb565b838552601f196123e8856133c0565b0160005b81811061250157505060005b848110612460578560405180916020820160208352815180915260206040840192019060005b81811061242c575050500390f35b825180516001600160a01b0316855260209081015163ffffffff16818601528695506040909401939092019160010161241e565b806001600160a01b0361247e612478600194866133d8565b86614ddd565b90549060031b1c168560005260166020526040600281600020016000906001600160a01b038416825260205220604051906124b882613066565b5490602060ff63ffffffff841693848452821c161515910152604051916124de83613066565b825260208201526124ef82896134a2565b526124fa81886134a2565b50016123f8565b60209060405161251081613066565b6000815260008382015282828a010152016123ec565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d85761083161255a913690600401613118565b60208151910120600052600c6020526020604060002054604051908152f35b346102d85760203660031901126102d857612592614656565b600435600052600a602052604060002054806000526008602052604060002060ff600182015460e01c166125c581613146565b1561037b57005b346102d8576125e36125dd36612fc1565b90613a1e565b60405180916020820160208352815180915260206040840192019060005b81811061260f575050500390f35b919350916020606060019263ffffffff60408851805184526001600160a01b038682015116868501520151166040820152019401910191849392612601565b346102d85761265c3661327b565b92829192421161278a576001600160a01b03811693612688856000526005602052604060002054151590565b156127755761269685614ed4565b936001600160a01b036126ac83838888886147ba565b16600052600360205260ff604060002054161561275857858581600052600e6020526040600020905b81548015612716576000198101908111611426576126f66127119184614ddd565b90549060031b1c806000526008602052604060002090614b80565b6126d5565b600082858083526006602052826040812055612731816150a0565b507f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b358380a4005b60405163335d4ce160e01b8152948594610b0b946004870161371f565b8463c2dda3f960e01b60005260045260246000fd5b6001600160a01b0390631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d8576127e09036906004016132c2565b6024359167ffffffffffffffff83116102d857612804610384933690600401613118565b92909161375b565b346102d85760203660031901126102d8576001600160a01b0361282d613018565b166000526015602052611c1761149f61285060406000206040519283809261341f565b604051918291602083526020830190612fd7565b346102d8576128723661327b565b829392421161290a576001600160a01b03831661289c816000526005602052604060002054151590565b156128f6576128aa90614ed4565b916001600160a01b036128c083838689896147ba565b16600052600360205260ff60406000205416156128d957005b610b0b9260405195869563335d4ce160e01b87526004870161371f565b63c2dda3f960e01b60005260045260246000fd5b836001600160a01b0384631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760203660031901126102d8576001600160a01b03612951613018565b612959614656565b16600052600b60205260406000205b80548015610384576000198101908111611426576114066129899183614ddd565b612968565b346102d85760403660031901126102d8576129a7613018565b60243567ffffffffffffffff811681036102d857610384916129c7614656565b6135ec565b346102d8576129e96129dd36612fc1565b81601b939293546144ae565b906129f3826133c0565b91612a0160405193846130bb565b808352601f19612a10826133c0565b0160005b818110612ba3575050601b54909160005b838110612ad1578460405160208101916020825280518093526040820192602060408260051b85010192019060005b818110612a615784840385f35b909192603f198582030186528351908151916003831015612abb57612aac82606060406020959460019787965263ffffffff8682015116868501520151918160408201520190612fd7565b95019601910194919094612a54565b634e487b7160e01b600052602160045260246000fd5b612adb81836133d8565b600084821015612b8f57601b90526040519060011b7f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1016000612b1d8361304a565b81549060ff8216906003821015612b7b5750835260081c63ffffffff1660208301526040516001939291612b5a90829061149f908290880161341f565b6040820152612b6982886134a2565b52612b7481876134a2565b5001612a25565b80634e487b7160e01b602492526021600452fd5b80634e487b7160e01b602492526032600452fd5b602090604051612bb28161304a565b600081526000838201526060604082015282828801015201612a14565b346102d85760803660031901126102d857612be8613018565b60243567ffffffffffffffff81116102d857612c1c91612c0f612c22923690600401613118565b93906044359436916134cc565b90614509565b90816000526009602052612c3e606435826040600020546144ae565b90612c4882613561565b9260005b838110612c615760405180611c17878261321b565b600190826000526009602052612c82611f126040600020611f0c84886133d8565b612c8c82886134a2565b52612c9781876134a2565b5001612c4c565b346102d85760003660031901126102d857611c176128506130dd565b346102d857612cd7612ccb36612fc1565b816004939293546144ae565b612ce0816133c0565b91612cee60405193846130bb565b818352612cfa826133c0565b602084019290601f19013684376004549160005b828110612d635784866040519182916020830190602084525180915260408301919060005b818110612d41575050500390f35b82516001600160a01b0316845285945060209384019390920191600101612d33565b612d6d81836133d8565b600085821015612b8f57600490527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015460008190526006602052600191906001600160a01b0316612dbf82896134a2565b5201612d0e565b346102d85760203660031901126102d8576020612e006001600160a01b03612dec613018565b166000526005602052604060002054151590565b6040519015158152f35b346102d857612e27612e1b36612fc1565b816017939293546144ae565b612e30816133c0565b91612e3e60405193846130bb565b818352601f19612e4d836133c0565b0160005b818110612f8e575050601754919060005b828110612f0057846040518091602082016020835281518091526040830190602060408260051b8601019301916000905b828210612ea257505050500390f35b919360019193955060208091603f1989820301855287519081518152606063ffffffff81612edd868601516080888701526080860190612fd7565b948260408201511660408601520151169101529601920192018594939192612e93565b612f0a81836133d8565b600085821015612b8f579060208260176001959452200163ffffffff6040600092549283815260166020522061149f612f5c868301549260405195612f4e8761302e565b86526040519283809261341f565b6020840152818116604084015260201c166060820152612f7c82886134a2565b52612f8781876134a2565b5001612e62565b602090604051612f9d8161302e565b60008152606083820152600060408201526000606082015282828801015201612e51565b60409060031901126102d8576004359060243590565b919082519283825260005b848110613003575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612fe2565b600435906001600160a01b03821682036102d857565b6080810190811067ffffffffffffffff8211176111c257604052565b6060810190811067ffffffffffffffff8211176111c257604052565b6040810190811067ffffffffffffffff8211176111c257604052565b60a0810190811067ffffffffffffffff8211176111c257604052565b610140810190811067ffffffffffffffff8211176111c257604052565b90601f8019910116810190811067ffffffffffffffff8211176111c257604052565b604051906130ec6040836130bb565b601a82527f576f726b666c6f77526567697374727920322e302e302d6465760000000000006020830152565b9181601f840112156102d85782359167ffffffffffffffff83116102d857602083818601950101116102d857565b60021115612abb57565b61321891815181526001600160a01b03602083015116602082015267ffffffffffffffff6040830151166040820152606082015161318d81613146565b60608201526101206132066131f26131e06131ce6131bc60808801516101406080890152610140880190612fd7565b60a088015187820360a0890152612fd7565b60c087015186820360c0880152612fd7565b60e086015185820360e0870152612fd7565b610100850151848203610100860152612fd7565b92015190610120818403910152612fd7565b90565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061324e57505050505090565b909192939460208061326c600193603f198682030187528951613150565b9701930193019193929061323f565b60606003198201126102d8576004356001600160a01b03811681036102d85791602435916044359067ffffffffffffffff82116102d8576132be91600401613118565b9091565b9181601f840112156102d85782359167ffffffffffffffff83116102d8576020808501948460051b0101116102d857565b60606003198201126102d8576004359067ffffffffffffffff82116102d85761331e91600401613118565b90916024359060443590565b9060406003198301126102d857600435916024359067ffffffffffffffff82116102d8576132be91600401613118565b9060406003198301126102d8576004356001600160a01b03811681036102d857916024359067ffffffffffffffff82116102d8576132be91600401613118565b6024359063ffffffff821682036102d857565b6044359063ffffffff821682036102d857565b67ffffffffffffffff81116111c25760051b60200190565b9190820180921161142657565b90600182811c92168015613415575b60208310146133ff57565b634e487b7160e01b600052602260045260246000fd5b91607f16916133f4565b6000929181549161342f836133e5565b8083529260018116908115613485575060011461344b57505050565b60009081526020812093945091925b83831061346b575060209250010190565b60018160209294939454838587010152019101919061345a565b915050602093945060ff929192191683830152151560051b010190565b80518210156134b65760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b92919267ffffffffffffffff82116111c257604051916134f6601f8201601f1916602001846130bb565b8294818452818301116102d8578281602093846000960137010152565b604051906135208261309e565b6060610120836000815260006020820152600060408201526000838201528260808201528260a08201528260c08201528260e0820152826101008201520152565b9061356b826133c0565b61357860405191826130bb565b8281528092613589601f19916133c0565b019060005b82811061359a57505050565b6020906135a5613513565b8282850101520161358e565b6014548110156134b657601460005260206000209060011b0190600090565b80548210156134b65760005260206000209060011b0190600090565b90601a54906001600160a01b038216906001600160a01b0367ffffffffffffffff8460a01c16941693828514948580966136de575b6136d657806080957fc0c3ee74e6d6070ee9c493e8b4f0477d2e66600f22997a4e073288d38d65933b97156136c1575b505067ffffffffffffffff831692828403613680575b50604051938452602084015260408301526060820152a1565b7fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b601a549260a01b16911617601a5538613667565b6001600160a01b03191617601a558038613651565b505050505050565b508167ffffffffffffffff841614613621565b9190820391821161142657565b908060209392818452848401376000828201840152601f01601f1916010190565b90926080926001600160a01b0361321897951683526020830152604082015281606082015201916136fe565b91908110156134b65760051b0190565b929181156106695761377a336000526005602052604060002054151590565b156103865761378a3684836134cc565b6020815191012092600091825b848110613956575063ffffffff8316156136d6576137b69136916134cc565b90836000526016602052604060002090600182015463ffffffff811680156139345786600052601160205263ffffffff6137f7848260406000205416614929565b16116139125763ffffffff60029160201c1692016001600160a01b0333166000528060205260ff60406000205460201c166138f2575b5063ffffffff61385a81923360005260106020526040600020886000526020528260406000205416614929565b92169116116138d4575060005b8181106138745750505050565b80613882600192848761374b565b35600052600a6020526040600020548060005260086020528460406000208460ff8183015460e01c166138b481613146565b146138c3575b50505001613867565b6138cc92614a85565b3884816138ba565b610b0b9060405191829163038857ff60e01b835233600484016144e9565b336000908152602091909152604090205463ffffffff908116925061382d565b60405163b993868760e01b81526020600482015280610b0b6024820187612fd7565b60405163393f328760e11b81526020600482015280610b0b6024820188612fd7565b9261396284868961374b565b35600052600a60205260ff600161397e6040600020543361489b565b015460e01c1661398d81613146565b156139b05763ffffffff1663ffffffff8114611426576001809101935b01613797565b926001906139aa565b906139c3826133c0565b6139d060405191826130bb565b82815280926139e1601f19916133c0565b019060005b8281106139f257505050565b602090604051613a018161304a565b6000815260008382015260006040820152828285010152016139e6565b90613a2c90826014546144ae565b908115613b2357613a3c826139b9565b91600091825b828110613a995750508110613a55575090565b613a5e816139b9565b9160005b828110613a6f5750505090565b80613a7c600192846134a2565b51613a8782876134a2565b52613a9281866134a2565b5001613a62565b613aab613aa682846133d8565b6135b1565b50600181015463ffffffff8160a01c1690428211613acf575b505050600101613a42565b6001600160a01b039060409794975193613ae88561304a565b5484521660208301526040820152613b0082876134a2565b52613b0b81866134a2565b50600019811461142657600180910193903880613ac4565b50506040516000613b356020836130bb565b81526000805b818110613b4757505090565b602090604051613b568161304a565b600081526000838201526000604082015282828601015201613b3b565b80634e487b7160e01b602492526041600452fd5b818110613b92575050565b60008155600101613b87565b9190601f8111613bad57505050565b613bd9926000526020600020906020601f840160051c83019310613bdb575b601f0160051c0190613b87565b565b9091508190613bcc565b92909391844211613db7576001600160a01b038416613c11816000526005602052604060002054151590565b613d8a5781600052600760205260ff60406000205416613d5a57600090613c6d613c87613c3c6130dd565b6040519283916020830195878752604084015246606084015230608084015260e060a0840152610100830190612fd7565b8a60c08301528660e083015203601f1981018352826130bb565b5190207f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c52613cc8603c8220613cc23687876134cc565b90614f37565b9091926004831015612b7b5782613d22575050506001600160a01b031660009081526003602052604090205460ff1615613d03575050505050565b90610b0b929160405195869563335d4ce160e01b87526004870161371f565b5060405163d36ab6b960e01b81526060600482015291829160ff613d4a606485018a8a6136fe565b9216602484015260448301520390fd5b7f77a338580000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7fd9a5f5ca0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b846001600160a01b03857f502d038700000000000000000000000000000000000000000000000000000000600052166004524260245260445260646000fd5b939161321895936001600160a01b03613e1d931686526060602087015260608601916136fe565b9260408185039101526136fe565b9091613e44336000526005602052604060002054151590565b156103865781600052600a60205260406000205490613e63823361489b565b60ff600182015460e01c16613e7781613146565b613f4357613eac9083600052601260205260406000205492836000526016602052613eb360406000206040519485809261341f565b03846130bb565b613ebe3682896134cc565b60208151910120809414613f3a57613f11613f25948387613f03613f35967f9b5361a5258ef6ac8039fd2d2ac276734695219cfd870711e7922c236e5db16d9a6146b9565b61237f61237836878e6134cc565b604051938493604085526040850190612fd7565b90838203602085015233976136fe565b0390a3565b50505050505050565b7fd74915a80000000000000000000000000000000000000000000000000000000060005260046000fd5b9190613f7a9136916134cc565b6020815191012060005260166020526001600160a01b0360406000209116600052600281016020526040600020602060405191613fb683613066565b549160ff63ffffffff841693848352831c1615159182910152613fe457506001015460201c63ffffffff1690565b905090565b90601b54680100000000000000008110156111c2578060016140109201601b55601b6135d0565b929092611df9578051926003841015612abb57600160409160009560ff825491168060ff19831617835564ffffffff00602087015160081b169164ffffffffff191617178155019101519283519067ffffffffffffffff8211613b735761407b82610edf85546133e5565b602090601f83116001146140b957906140aa939495836140ae5750508160011b916000199060031b1c19161790565b9055565b015190503880610f01565b90601f198316848352818320925b8181106140ff575095836001959697106140e6575b505050811b019055565b015160001960f88460031b161c191690553880806140dc565b9192602060018192868b0151815501940192016140c7565b919392936141263683856134cc565b6020815191012094856000526016602052604060002090600182019063ffffffff82549416938463ffffffff8216149081614484575b5061447a5763ffffffff81169284841161445057805461417b816133e5565b1561437d575b50508363ffffffff1983541617825567ffffffff0000000082549160201b169067ffffffff000000001916179055604051956020870152816040870152604086526141cd6060876130bb565b604051956141da8761304a565b60008752602087019663ffffffff4216885260408101918252601b54680100000000000000008110156111c2578060016142199201601b55601b6135d0565b919091611df95751906003821015612abb5760019160009964ffffffff0060ff84549316918260ff1985161785555160081b169164ffffffffff1916171781550190519687519067ffffffffffffffff8211613b735761427d82610edf85546133e5565b602090601f83116001146142f9579180917fe6a468e36669d9496095c02796a8a8dcda8ec8d551f6c7454948ecc68aac162d999a6142cf94926140ae5750508160011b916000199060031b1c19161790565b90555b6142e96040519485946060865260608601916136fe565b91602084015260408301520390a1565b98601f198316848b52828b209a5b8181106143655750917fe6a468e36669d9496095c02796a8a8dcda8ec8d551f6c7454948ecc68aac162d999a9184600195941061434c575b505050811b0190556142d2565b015160001960f88460031b161c1916905538808061433f565b838301518c556001909b019a60209384019301614307565b67ffffffffffffffff87116111c2578661439961439f926133e5565b83613b9e565b600086601f81116001146143ec57806143cd926000916143e157508160011b916000199060031b1c19161790565b90555b6143d988614fea565b503880614181565b905089013538611fcd565b50818152602081209087601f198116825b8b8282106144365750501061441c575b5050600186811b0190556143d0565b880135600019600389901b60f8161c19169055388061440d565b84013585556001909401936020938401938b9350016143fd565b7fec623c5f0000000000000000000000000000000000000000000000000000000060005260046000fd5b5050505050509050565b905063ffffffff8083169160201c16143861415c565b356001600160a01b03811681036102d85790565b808210156144e15782816144c561321895856133d8565b11156144d157506136f1565b6144dc9150826133d8565b6136f1565b505050600090565b6040906001600160a01b0361321894931681528160208201520190612fd7565b906145226108b1916040519283916020830195866144e9565b51902090565b614530613513565b81600052600860205260406000206001810154926001600160a01b03841692831561464e57509160066146338361149f9567ffffffffffffffff61464596549860ff8160e01c1692600052601260205260406000205460005260166020526040600020966040519a6145a18c61309e565b8b5260208b015260a01c1660408901526145ba81613146565b60608801526040516145d38161149f816002860161341f565b60808801526040516145ec8161149f816003860161341f565b60a08801526040516146058161149f816004860161341f565b60c088015260405161461e8161149f816005860161341f565b60e088015261149f604051809481930161341f565b6101008501526040519283809261341f565b61012082015290565b935050505090565b6001600160a01b0360015416330361466a57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b90916146ab6132189360408452604084019061341f565b91602081840391015261341f565b7ff764e70143a953f513d351195b60c30d5fdaaca38edb60b262997f551e48868960018301916001600160a01b038354947c010000000000000000000000000000000000000000000000000000000060ff60e01b19871617855582600052601260205261474f826040600020549716938760028401956147496040516147438161149f818c61341f565b82614509565b92614e0e565b6147998154604051908860208301526040820152604081526147726060826130bb565b6040519061477f8261304a565b6002825263ffffffff421660208301526040820152613fe9565b549354169360005260166020526040600020613f3560405192839283614694565b9161482090614807926147cb6130dd565b916040519485936001600160a01b03602086019860018a5216604086015246606086015230608086015260e060a0860152610100850190612fd7565b9160c084015260e083015203601f1981018352826130bb565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c5261485d603c600020613cc23685856134cc565b6004829593951015612abb5781614875575050505090565b60ff613d4a60405195869563d36ab6b960e01b87526060600488015260648701916136fe565b9060005260086020526040600020906001600160a01b036001830154169081156148e7576001600160a01b03168091036148d3575090565b6331ee6dc760e01b60005260045260246000fd5b7f871e01b20000000000000000000000000000000000000000000000000000000060005260046000fd5b63ffffffff60019116019063ffffffff821161142657565b9063ffffffff8091169116019063ffffffff821161142657565b90806000526016602052604060002090600182015463ffffffff81168015614a635782600052601160205263ffffffff61498560018260406000205416614929565b1611614a415763ffffffff60029160201c1692016001600160a01b0384166000528060205260ff60406000205460201c16614a1b575b506001600160a01b038316600052601060205260406000209060005260205263ffffffff806149f260018260406000205416614929565b92169116116149ff575050565b610b0b60405192839263038857ff60e01b8452600484016144e9565b9091506001600160a01b03831660005260205263ffffffff6040600020541690386149bb565b60405163b993868760e01b81526020600482015280610b0b6024820188612fd7565b60405163393f328760e11b81526020600482015280610b0b6024820189612fd7565b7f7fdfd5efa814f8c90ef997a11cfbb29660e5af33312debb9c4898169a73f824a906001600160a01b036001840193614adc8286541693876002840195614ad66040516147438161149f818c61341f565b92614d17565b60ff60e01b198554168555614799815460405190886020830152604082015260408152614b0a6060826130bb565b60405190614b178261304a565b6001825263ffffffff421660208301526040820152613fe9565b614b3b81546133e5565b9081614b45575050565b81601f60009311600114614b57575055565b81835260208320614b7391601f0160051c810190600101613b87565b8082528160208120915555565b90614743907f48f05f657e3e9a02bfe546c4d3961f08b1f9a0f9798b13fcbc2231173b1ecd94614c9f614c0e614cad6001600160a01b036001860195865460ff8a848316614bdc61149f600287019d8e6040519283809261341f565b938491836000526012602052604060002054948592836000526016602052614c1560406000206040519d8e809261341f565b038d6130bb565b60e01c16614c2281613146565b15614d05575b50505050600052600d602052614c428a604060002061516a565b5082885416600052600e602052614c5d8a604060002061516a565b506000526009602052614c7489604060002061516a565b508054600052600a602052600060408120555495541695604051938493604085526040850190612fd7565b90838203602085015261341f565b0390a36000526008602052600660406000206000815560006001820155614cd660028201614b31565b614ce260038201614b31565b614cee60048201614b31565b614cfa60058201614b31565b01614b3b81546133e5565b614d0e93614e0e565b8a828238614c28565b9192906001600160a01b0316806000526010602052604060002084600052602052604060002063ffffffff614d4e81835416614911565b1663ffffffff19825416179055836000526011602052604060002063ffffffff614d7a81835416614911565b1663ffffffff1982541617905583600052600c602052614d9e836040600020615044565b50600052600b602052614db5826040600020615044565b50600052600f602052614dcc816040600020615044565b506000526012602052604060002055565b80548210156134b65760005260206000200190600090565b63ffffffff6000199116019063ffffffff821161142657565b9291906001600160a01b031680600052600b602052614e3184604060002061516a565b5081600052600c602052614e4984604060002061516a565b506000526010602052604060002081600052602052604060002063ffffffff614e7481835416614df5565b1663ffffffff198254161790556000526011602052604060002063ffffffff614e9f81835416614df5565b1663ffffffff19825416179055600052600f602052614ec281604060002061516a565b50600052601260205260006040812055565b80600052600660205260406000205490811580614f21575b614ef4575090565b7f02b566860000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5080600052600560205260406000205415614eec565b8151919060418303614f6857614f6192506020820151906060604084015193015160001a90615227565b9192909190565b505060009160029190565b80600052600560205260406000205415600014614fe457600454680100000000000000008110156111c257614fcb614fb48260018594016004556004614ddd565b819391549060031b91821b91600019901b19161790565b9055600454906000526005602052604060002055600190565b50600090565b80600052601860205260406000205415600014614fe457601754680100000000000000008110156111c25761502b614fb48260018594016017556017614ddd565b9055601754906000526018602052604060002055600190565b600082815260018201602052604090205461509957805490680100000000000000008210156111c25782615082614fb4846001809601855584614ddd565b905580549260005201602052604060002055600190565b5050600090565b60008181526005602052604090205480156150995760001981018181116114265760045460001981019190821161142657818103615130575b505050600454801561511a57600019016150f4816004614ddd565b8154906000199060031b1b19169055600455600052600560205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b615152615141614fb4936004614ddd565b90549060031b1c9283926004614ddd565b905560005260056020526040600020553880806150d9565b906001820191816000528260205260406000205480151560001461521e576000198101818111611426578254600019810191908211611426578181036151e7575b5050508054801561511a5760001901906151c58282614ddd565b8154906000199060031b1b191690555560005260205260006040812055600190565b6152076151f7614fb49386614ddd565b90549060031b1c92839286614ddd565b9055600052836020526040600020553880806151ab565b50505050600090565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116152b0579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa156152a4576000516001600160a01b038116156152985790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fea164736f6c634300081a000a", + Bin: "0x60803460a8573315609757600180546001600160a01b0319163317905560a081016001600160401b03811182821017608157604090815280825260208083015260c882820152610400606083015262093a80608090920191909152600280546001600160481b03191667093a800400c820401790555161533590816100ae8239f35b634e487b7160e01b600052604160045260246000fd5b639b15e16f60e01b60005260046000fd5b600080fdfe610140604052600436101561001357600080fd5b60003560e01c806301b7690514612e0d5780630987294c14612dd357806317e0edfc14612cc7578063181f5a7714612cab5780631c08b00a14612bdc5780631c71682c146129d9578063245b8e4e1461299b578063274e00e01461293d578063289bd108146128715780632afc4130146128195780632c50a955146127bc57806339d68c6a1461265b57806339e43234146125d95780633c17181b146125865780633c54b50b146125335780634b6d2e5b14612391578063530979d614612302578063556dbd0d1461228b57806361043193146121ee578063695e13401461219d57806370ae26401461216757806379ba5097146120ce578063865ec9e0146120955780638b42a96d14611f475780638c42ffc514611e935780638da5cb5b14611e6c57806394ea0da614611c4a578063952bb98414611bff578063a0b8a4fe14611be1578063a408901614611b3e578063a6008f2014611a1c578063a7d0185814611975578063afbb24011461195e578063b377bfc514610ac7578063b668435f146108b8578063ba8706861461089a578063bae5c29a14610869578063bdf6b4ff146107fd578063be674333146107d6578063bf2a0d9314610783578063c3f909d4146106d2578063cabb9e7a14610693578063d8b80738146105b1578063d8e4a72414610457578063dc101969146103b9578063de49b95f1461039b578063e690f33214610317578063ea32308b146102dd5763f2fde38b1461023857600080fd5b346102d85760203660031901126102d8576001600160a01b0361025961301b565b6102616146c8565b163381146102ae57806001600160a01b031960005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b600080fd5b346102d85760203660031901126102d8576001600160a01b036102fe61301b565b16600052600b6020526020604060002054604051908152f35b346102d85760203660031901126102d85761033f336000526005602052604060002054151590565b1561038657600435600052600a60205260406000205461035f813361490d565b600160ff8183015460e01c1661037481613149565b0361037b57005b6103849161472b565b005b63c2dda3f960e01b6000523360045260246000fd5b346102d85760003660031901126102d8576020601454604051908152f35b346102d85760603660031901126102d85760443560243567ffffffffffffffff82116102d8576103fd6103f2600193369060040161311b565b908360043533613be8565b3360005260066020528060406000205561041633614fe5565b5080600052600760205260406000208260ff19825416179055337f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b35600080a4005b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d8576104889036906004016132c5565b602435918215158093036102d85761049e6146c8565b60ff831660005b83811061052f57505060405191806040840160408552526060830191906000905b8082106104fc577f861d38caf3055a11344d9f540d5ab4e5c38d751dfcbd1156aed92b71805e13168580868960208301520390a1005b9091928335906001600160a01b03821682036102d857602080916001600160a01b036001941681520194019201906104c6565b6001600160a01b0361054a61054583878761374e565b61450c565b161561058757806001600160a01b03610569610545600194888861374e565b16600052600360205260406000208360ff19825416179055016104a5565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576105e29036906004016132c5565b8015610669576105ff336000526005602052604060002054151590565b156103865760005b81811061061057005b8061061e600192848661374e565b35600052600a602052604060002054610637813361490d565b8360ff8183015460e01c1661064b81613149565b03610659575b505001610607565b6106629161472b565b8480610651565b7faea36d000000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d8576001600160a01b036106b461301b565b166000526003602052602060ff604060002054166040519015158152f35b346102d85760003660031901126102d857600060806040516106f381613085565b828152826020820152826040820152826060820152015260a060405161071881613085565b63ffffffff60025461ffff60ff82169384815260ff60208201818560081c168152816040840191818760101c1683528760806060870196888a60181c168852019760281c16875260405198895251166020880152511660408601525116606084015251166080820152f35b346102d85760603660031901126102d85760043567ffffffffffffffff81116102d8576107b761038491369060040161311b565b6107bf61339d565b906107c86133b0565b926107d16146c8565b614189565b346102d85760206107ef6107e93661335d565b91613fdf565b63ffffffff60405191168152f35b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d85761083161083891369060040161311b565b36916134cf565b6020815191012060005260166020526040600181600020015463ffffffff825191818116835260201c166020820152f35b346102d85760403660031901126102d857602061089061088761301b565b60243590613f70565b6040519015158152f35b346102d85760003660031901126102d8576020601b54604051908152f35b346102d85760803660031901126102d8576108d161301b565b60243567ffffffffffffffff81116102d8576108f190369060040161311b565b906108fa6133b0565b916064359283151584036102d8576109106146c8565b61091b3683856134cf565b602081519101208060005260166020526040600020600181019063ffffffff82541615610aa057600201604060006001600160a01b038a168152826020522096600014610a2457505463ffffffff928316921682116109fa577f945de380da34dd2a3da003b018b92eb5714e63dbcc911e3caef8307407c823249464010000000064ff00000000198254161781558263ffffffff1982541617905560005260196020526109d76001600160a01b036040600020961680966150b0565b506109ef604051938493604085526040850191613701565b9060208301520390a2005b7feabc4fd90000000000000000000000000000000000000000000000000000000060005260046000fd5b919250507f6b349f5a70df2e3faf5fb1a615930e6816698828af7279d4d231f0edc013d84994506001600160a01b038616600052602052600060408120556000526019602052610a836001600160a01b036040600020951680956151d6565b50610a9b604051928392602084526020840191613701565b0390a2005b60405163393f328760e11b81526020600482015280610ac360248201888a613701565b0390fd5b346102d8576101203660031901126102d85760043567ffffffffffffffff81116102d857610af990369060040161311b565b610100526101205260243567ffffffffffffffff81116102d857610b2190369060040161311b565b90600260643510156102d85760843567ffffffffffffffff81116102d857610b4d90369060040161311b565b9060e0529060a43567ffffffffffffffff81116102d857610b7290369060040161311b565b9160c43567ffffffffffffffff81116102d857610b9390369060040161311b565b9560e43567ffffffffffffffff81116102d857610bb490369060040161311b565b929093610104359586151587036102d857610bdc336000526005602052604060002054151590565b15610386576044351561193457604435600052600a6020526040600020546119045760025460ff8160101c1689156118da578061189d575b5061ffff8160181c1680151580611894575b611863575084156118395760ff8160081c1680151580611830575b6117ff575061010051156117d55760ff16801515806117c9575b61179557506040516020810190610c8e81610c80888761010051610120513389613df9565b03601f1981018352826130be565b5190209788600052600860205260406000206001600160a01b036001820154168015600014611413575050610cd3610ccd3661010051610120516134cf565b3361457b565b9a610ce1368c60e0516134cf565b602081519101209815611387575b610cfa606435613149565b6064351561135f575b604051978861012081011067ffffffffffffffff6101208b01111761118857610db0899695610da18897610dbf956101208a016040526044358a5260a0610d9560208c019a338c5260408d0160c05267ffffffffffffffff421660c0515260608d019a610d71606435613149565b6064358c526080610d893661010051610120516134cf565b9e019d8e5236916134cf565b9b019a8b5236916134cf565b9860c08c01998a5236916134cf565b9760e08a0198895236916134cf565b610100880160a05260a051528860005260086020526040600020965187556001600160a01b038060018901935116166001600160a01b031983541617825560c051517fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b8085549360a01b1616911617825551610e4681613149565b610e4f81613149565b60ff60e01b197cff0000000000000000000000000000000000000000000000000000000083549260e01b16911617905560028501905180519067ffffffffffffffff821161118857610eab82610ea585546133e8565b85613ba1565b602090601f83116001146112f857610edc9291600091836112ed575b50508160011b916000199060031b1c19161790565b90555b518051600385019167ffffffffffffffff821161118857610f0482610ea585546133e8565b602090601f831160011461128657610f3492916000918361127b5750508160011b916000199060031b1c19161790565b90555b518051600484019167ffffffffffffffff821161118857610f5c82610ea585546133e8565b602090601f831160011461121457610f8c92916000918361119e5750508160011b916000199060031b1c19161790565b90555b518051600583019167ffffffffffffffff821161118857610fb482610ea585546133e8565b602090601f83116001146111a9579180610fe992600696959460009261119e5750508160011b916000199060031b1c19161790565b90555b019360a0515194855167ffffffffffffffff8111611188576110188161101284546133e8565b84613ba1565b6020601f821160011461111e57908061104c926110a298996000926111135750508160011b916000199060031b1c19161790565b90555b60005260096020526110658260406000206150b0565b50604435600052600a60205281604060002055600052600d60205261108e8160406000206150b0565b5033600052600e60205260406000206150b0565b506110bb6040519160608352606083019060e051613701565b6110c6606435613149565b606435602083015281810360408301527f74dc2e5bdab0a48c5e7d33c1eaad00066fd19c8d9f29d4c3a251711c0a0e9a0933928061110e604435946101005161012051613701565b0390a3005b015190508980610ec7565b601f1982169783600052816000209860005b8181106111705750916110a2989991846001959410611157575b505050811b01905561104f565b015160001960f88460031b161c1916905588808061114a565b838301518b556001909a019960209384019301611130565b634e487b7160e01b600052604160045260246000fd5b015190508a80610ec7565b90601f1983169184600052816000209260005b8181106111fc5750916001939185600698979694106111e3575b505050811b019055610fec565b015160001960f88460031b161c191690558980806111d6565b929360206001819287860151815501950193016111bc565b90601f1983169184600052816000209260005b818110611263575090846001959493921061124a575b505050811b019055610f8f565b015160001960f88460031b161c1916905589808061123d565b92936020600181928786015181550195019301611227565b015190508b80610ec7565b90601f1983169184600052816000209260005b8181106112d557509084600195949392106112bc575b505050811b019055610f37565b015160001960f88460031b161c191690558a80806112af565b92936020600181928786015181550195019301611299565b015190508c80610ec7565b90601f1983169184600052816000209260005b818110611347575090846001959493921061132e575b505050811b019055610edf565b015160001960f88460031b161c191690558b8080611321565b9293602060018192878601518155019501930161130b565b61137661136f368d60e0516134cf565b8a336149b5565b6113828c8a338d614d89565b610d03565b9a999897969594939291908a600052600f60205260406000206080525b60805154801561140257806000198101116113ec576113cc6113e79160001901608051614e4f565b90549060031b1c80600052600860205260406000209061472b565b6113a4565b634e487b7160e01b600052601160045260246000fd5b50909192939495969798999a610cef565b9294969850969a94509791503303611780578454600052600a60205260006040812055604435600052600a6020526040600020558354956044358555600385019160405161146c816114658187613422565b03826130be565b6020815191012061147e3684846134cf565b60208151910120036116b9575b50505060048301916040516114a4816114658187613422565b602081519101206114b63684846134cf565b60208151910120036115e9575b5050506006019067ffffffffffffffff8111611188576114e78161101284546133e8565b6000601f82116001146115855781906115199394959660009261157a5750508160011b916000199060031b1c19161790565b90555b6115346040519260408452604084019060e051613701565b9082820360208401527f03d454e4bcb8ae5031ab165ca5f4161ebf48cfaf66d96cc490ba500a59a1e322339380611575604435956101005161012051613701565b0390a4005b013590508680610ec7565b601f198216958382526020822091805b8881106115d1575083600195969798106115b7575b505050811b01905561151c565b0135600019600384901b60f8161c191690558580806115aa565b90926020600181928686013581550194019101611595565b67ffffffffffffffff82116111885761160682610ea585546133e8565b600090601f831160011461165157918061163b9260069695946000926116465750508160011b916000199060031b1c19161790565b90555b9086806114c3565b013590508a80610ec7565b8382526020822091601f198416815b8181106116a1575091600193918560069897969410611687575b505050811b01905561163e565b0135600019600384901b60f8161c1916905589808061167a565b91936020600181928787013581550195019201611660565b67ffffffffffffffff8211611188576116d682610ea585546133e8565b600090601f831160011461171c576117069291600091836117115750508160011b916000199060031b1c19161790565b90555b87808061148b565b013590508b80610ec7565b8382526020822091601f198416815b818110611768575090846001959493921061174e575b505050811b019055611709565b0135600019600384901b60f8161c191690558a8080611741565b9193602060018192878701358155019501920161172b565b6331ee6dc760e01b6000523360045260246000fd5b7f36a7c503000000000000000000000000000000000000000000000000000000006000526101005160045260245260446000fd5b50806101005111610c5b565b7f485b8ed40000000000000000000000000000000000000000000000000000000060005260046000fd5b857f436f97540000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808611610c41565b7f65cf28770000000000000000000000000000000000000000000000000000000060005260046000fd5b867f354f25140000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b50808711610c26565b808a116118c357808c1115610c14578b6219aad560e31b60005260045260245260446000fd5b896219aad560e31b60005260045260245260446000fd5b7f9cd963cf0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f0d5354a40000000000000000000000000000000000000000000000000000000060005260443560045260246000fd5b7f315de7450000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85761038461196f3661332d565b91613e2e565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576119a69036906004016132c5565b80156106695760005b8181106119b857005b806119c6600192848661374e565b356119cf6146c8565b600052600a602052604060002054806000526008602052604060002060ff8482015460e01c166119fe81613149565b15611a0c575b5050016119af565b611a159161472b565b8480611a04565b346102d85760a03660031901126102d85760043560ff81168091036102d8576024359060ff8216908183036102d8576044359160ff8316908184036102d8576064359161ffff8316918284036102d8576084359663ffffffff8816948589036102d85764ffff00000060a09862ff00007f9c1a161a4cdd9b19a46f9660eee21b6394dc5aa70fc9e093dbb36d2c1786d7739b611ab66146c8565b896080604051611ac581613085565b8d81528960208201528a60408201528b6060820152015268ffffffff00000000006002549160281b169561ff0068ffffffff000000000019928d87199162ffffff191617169160081b1617169160101b16179160181b1617176002556040519485526020850152604084015260608301526080820152a1005b346102d85760603660031901126102d857611b5761301b565b60243567ffffffffffffffff81116102d857611b7790369060040161311b565b916044359267ffffffffffffffff84116102d857611bc1611bc993610c80611ba6611bdd97369060040161311b565b90611baf613516565b50604051958694602086019889613df9565b51902061459a565b604051918291602083526020830190613153565b0390f35b346102d85760003660031901126102d8576020600454604051908152f35b346102d85760803660031901126102d857611c1861301b565b6064359067ffffffffffffffff82116102d857611c3c61038492369060040161311b565b916044359060243590613be8565b346102d85760403660031901126102d857600435611c6661339d565b63ffffffff60025460281c169063ffffffff811691428311801590611e50575b611e1b5750611ca2336000526005602052604060002054151590565b1561038657604080513360208201908152918101859052611cc68160608101610c80565b51902060008181526013602052604090205491908215611d4b575060001982019182116113ec576001611cfb611d1d936135b4565b50019063ffffffff60a01b1963ffffffff60a01b83549260a01b169116179055565b6040519081527ff69135e4f80a25991d2f877c365c191c51ec3c0063ecb9299d314cd9da4880d160203392a3005b91505060145490600182018092116113ec576000526013602052604060002055604051611d778161304d565b82815260208101338152604082018381526014546801000000000000000081101561118857806001611dac92016014556135b4565b919091611e05576001600160a01b0380600163ffffffff94611e009751815501945116166001600160a01b0319845416178355511663ffffffff60a01b1963ffffffff60a01b83549260a01b169116179055565b611d1d565b634e487b7160e01b600052600060045260246000fd5b82847f7ffd3b8f0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b508015158015611c86575080611e6642856136f4565b11611c86565b346102d85760003660031901126102d85760206001600160a01b0360015416604051908152f35b346102d85760603660031901126102d857611eac61301b565b6001600160a01b0360243591169081600052600e602052611ed560443582604060002054614520565b90611edf82613564565b9260005b838110611ef85760405180611bdd878261321e565b60019082600052600e602052611f2b611f1f6040600020611f1984886133db565b90614e4f565b90549060031b1c61459a565b611f3582886134a5565b52611f4081876134a5565b5001611ee3565b346102d8576001600160a01b03611f5d3661335d565b929091611f686146c8565b169081600052601560205260406000209267ffffffffffffffff811161118857611f9c81611f9686546133e8565b86613ba1565b600093601f821160011461201357611fee82807f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f139697600091612008575b508160011b916000199060031b1c19161790565b90555b610a9b604051928392602084526020840191613701565b905085013588611fda565b80855260208520601f19831695805b87811061207d5750837f0d8eb32301e2fa82bb02c4905860f05470c9b7771dcb418fffde59818a053f13969710612063575b5050600182811b019055611ff1565b840135600019600385901b60f8161c191690558580612054565b90916020600181928589013581550193019101612022565b346102d85760003660031901126102d8576040601a5467ffffffffffffffff8251916001600160a01b038116835260a01c166020820152f35b346102d85760003660031901126102d8576000546001600160a01b038116330361213d576001600160a01b0319600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b346102d85760203660031901126102d857612180613516565b50600435600052600a602052611bdd611bc960406000205461459a565b346102d85760203660031901126102d8576121c5336000526005602052604060002054151590565b1561038657600435600052600a6020526103846040600020546121e8813361490d565b90614bf2565b346102d85761222b61220e612202366132f6565b949290939136916134cf565b602081519101209283600052600d60205282604060002054614520565b9061223582613564565b9260005b83811061224e5760405180611bdd878261321e565b60019082600052600d60205261226f611f1f6040600020611f1984886133db565b61227982886134a5565b5261228481876134a5565b5001612239565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d8576122bf6122c791369060040161311b565b6108316146c8565b60208151910120600052600c60205260406000205b805480156103845760001981019081116113ec576113cc6122fd9183614e4f565b6122dc565b346102d8576123103661332d565b9091612329336000526005602052604060002054151590565b1561038657600052600a602052604060002054612346813361490d565b9060ff600183015460e01c1661235b81613149565b61236157005b61238c612385610384956123763687836134cf565b602081519101209536916134cf565b84336149b5565b614af7565b346102d8576123ad6123a2366132f6565b9290939136916134cf565b602081519101208060005260196020526123ce604060002092848454614520565b916123d8836133c3565b936123e660405195866130be565b838552601f196123f5856133c3565b0160005b81811061250e57505060005b84811061246d578560405180916020820160208352815180915260206040840192019060005b818110612439575050500390f35b825180516001600160a01b0316855260209081015163ffffffff16818601528695506040909401939092019160010161242b565b806001600160a01b0361248b612485600194866133db565b86614e4f565b90549060031b1c168560005260166020526040600281600020016000906001600160a01b038416825260205220604051906124c582613069565b5490602060ff63ffffffff841693848452821c161515910152604051916124eb83613069565b825260208201526124fc82896134a5565b5261250781886134a5565b5001612405565b60209060405161251d81613069565b6000815260008382015282828a010152016123f9565b346102d85760203660031901126102d85760043567ffffffffffffffff81116102d85761083161256791369060040161311b565b60208151910120600052600c6020526020604060002054604051908152f35b346102d85760203660031901126102d85761259f6146c8565b600435600052600a602052604060002054806000526008602052604060002060ff600182015460e01c166125d281613149565b1561037b57005b346102d8576125f06125ea36612fc4565b90613a21565b60405180916020820160208352815180915260206040840192019060005b81811061261c575050500390f35b919350916020606060019263ffffffff60408851805184526001600160a01b03868201511686850152015116604082015201940191019184939261260e565b346102d8576126693661327e565b928291924211612797576001600160a01b03811693612695856000526005602052604060002054151590565b15612782576126a385614f46565b936001600160a01b036126b9838388888861482c565b16600052600360205260ff604060002054161561276557858581600052600e6020526040600020905b815480156127235760001981019081116113ec5761270361271e9184614e4f565b90549060031b1c806000526008602052604060002090614bf2565b6126e2565b60008285808352600660205282604081205561273e8161510c565b507f07756706c87366f7add7b5c7df5dd4f570e02667b54e60b75e1fd1a2ac294b358380a4005b60405163335d4ce160e01b8152948594610ac39460048701613722565b8463c2dda3f960e01b60005260045260246000fd5b6001600160a01b0390631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760403660031901126102d85760043567ffffffffffffffff81116102d8576127ed9036906004016132c5565b6024359167ffffffffffffffff83116102d85761281161038493369060040161311b565b92909161375e565b346102d85760203660031901126102d8576001600160a01b0361283a61301b565b166000526015602052611bdd61146561285d604060002060405192838092613422565b604051918291602083526020830190612fda565b346102d85761287f3661327e565b8293924211612917576001600160a01b0383166128a9816000526005602052604060002054151590565b15612903576128b790614f46565b916001600160a01b036128cd838386898961482c565b16600052600360205260ff60406000205416156128e657005b610ac39260405195869563335d4ce160e01b875260048701613722565b63c2dda3f960e01b60005260045260246000fd5b836001600160a01b0384631ec5288b60e11b600052166004524260245260445260646000fd5b346102d85760203660031901126102d8576001600160a01b0361295e61301b565b6129666146c8565b16600052600b60205260406000205b805480156103845760001981019081116113ec576113cc6129969183614e4f565b612975565b346102d85760403660031901126102d8576129b461301b565b60243567ffffffffffffffff811681036102d857610384916129d46146c8565b6135ef565b346102d8576129f66129ea36612fc4565b81601b93929354614520565b90612a00826133c3565b91612a0e60405193846130be565b808352601f19612a1d826133c3565b0160005b818110612bb0575050601b54909160005b838110612ade578460405160208101916020825280518093526040820192602060408260051b85010192019060005b818110612a6e5784840385f35b909192603f198582030186528351908151916003831015612ac857612ab982606060406020959460019787965263ffffffff8682015116868501520151918160408201520190612fda565b95019601910194919094612a61565b634e487b7160e01b600052602160045260246000fd5b612ae881836133db565b600084821015612b9c57601b90526040519060011b7f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1016000612b2a8361304d565b81549060ff8216906003821015612b885750835260081c63ffffffff1660208301526040516001939291612b679082906114659082908801613422565b6040820152612b7682886134a5565b52612b8181876134a5565b5001612a32565b80634e487b7160e01b602492526021600452fd5b80634e487b7160e01b602492526032600452fd5b602090604051612bbf8161304d565b600081526000838201526060604082015282828801015201612a21565b346102d85760803660031901126102d857612bf561301b565b60243567ffffffffffffffff81116102d857612c2991612c1c612c2f92369060040161311b565b93906044359436916134cf565b9061457b565b90816000526009602052612c4b60643582604060002054614520565b90612c5582613564565b9260005b838110612c6e5760405180611bdd878261321e565b600190826000526009602052612c8f611f1f6040600020611f1984886133db565b612c9982886134a5565b52612ca481876134a5565b5001612c59565b346102d85760003660031901126102d857611bdd61285d6130e0565b346102d857612ce4612cd836612fc4565b81600493929354614520565b612ced816133c3565b91612cfb60405193846130be565b818352612d07826133c3565b602084019290601f19013684376004549160005b828110612d705784866040519182916020830190602084525180915260408301919060005b818110612d4e575050500390f35b82516001600160a01b0316845285945060209384019390920191600101612d40565b612d7a81836133db565b600085821015612b9c57600490527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015460008190526006602052600191906001600160a01b0316612dcc82896134a5565b5201612d1b565b346102d85760203660031901126102d85760206108906001600160a01b03612df961301b565b166000526005602052604060002054151590565b346102d857612e2a612e1e36612fc4565b81601793929354614520565b612e33816133c3565b91612e4160405193846130be565b818352601f19612e50836133c3565b0160005b818110612f91575050601754919060005b828110612f0357846040518091602082016020835281518091526040830190602060408260051b8601019301916000905b828210612ea557505050500390f35b919360019193955060208091603f1989820301855287519081518152606063ffffffff81612ee0868601516080888701526080860190612fda565b948260408201511660408601520151169101529601920192018594939192612e96565b612f0d81836133db565b600085821015612b9c579060208260176001959452200163ffffffff60406000925492838152601660205220611465612f5f868301549260405195612f5187613031565b865260405192838092613422565b6020840152818116604084015260201c166060820152612f7f82886134a5565b52612f8a81876134a5565b5001612e65565b602090604051612fa081613031565b60008152606083820152600060408201526000606082015282828801015201612e54565b60409060031901126102d8576004359060243590565b919082519283825260005b848110613006575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612fe5565b600435906001600160a01b03821682036102d857565b6080810190811067ffffffffffffffff82111761118857604052565b6060810190811067ffffffffffffffff82111761118857604052565b6040810190811067ffffffffffffffff82111761118857604052565b60a0810190811067ffffffffffffffff82111761118857604052565b610140810190811067ffffffffffffffff82111761118857604052565b90601f8019910116810190811067ffffffffffffffff82111761118857604052565b604051906130ef6040836130be565b601a82527f576f726b666c6f77526567697374727920322e302e302d6465760000000000006020830152565b9181601f840112156102d85782359167ffffffffffffffff83116102d857602083818601950101116102d857565b60021115612ac857565b61321b91815181526001600160a01b03602083015116602082015267ffffffffffffffff6040830151166040820152606082015161319081613149565b60608201526101206132096131f56131e36131d16131bf60808801516101406080890152610140880190612fda565b60a088015187820360a0890152612fda565b60c087015186820360c0880152612fda565b60e086015185820360e0870152612fda565b610100850151848203610100860152612fda565b92015190610120818403910152612fda565b90565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061325157505050505090565b909192939460208061326f600193603f198682030187528951613153565b97019301930191939290613242565b60606003198201126102d8576004356001600160a01b03811681036102d85791602435916044359067ffffffffffffffff82116102d8576132c19160040161311b565b9091565b9181601f840112156102d85782359167ffffffffffffffff83116102d8576020808501948460051b0101116102d857565b60606003198201126102d8576004359067ffffffffffffffff82116102d8576133219160040161311b565b90916024359060443590565b9060406003198301126102d857600435916024359067ffffffffffffffff82116102d8576132c19160040161311b565b9060406003198301126102d8576004356001600160a01b03811681036102d857916024359067ffffffffffffffff82116102d8576132c19160040161311b565b6024359063ffffffff821682036102d857565b6044359063ffffffff821682036102d857565b67ffffffffffffffff81116111885760051b60200190565b919082018092116113ec57565b90600182811c92168015613418575b602083101461340257565b634e487b7160e01b600052602260045260246000fd5b91607f16916133f7565b60009291815491613432836133e8565b8083529260018116908115613488575060011461344e57505050565b60009081526020812093945091925b83831061346e575060209250010190565b60018160209294939454838587010152019101919061345d565b915050602093945060ff929192191683830152151560051b010190565b80518210156134b95760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b92919267ffffffffffffffff821161118857604051916134f9601f8201601f1916602001846130be565b8294818452818301116102d8578281602093846000960137010152565b60405190613523826130a1565b6060610120836000815260006020820152600060408201526000838201528260808201528260a08201528260c08201528260e0820152826101008201520152565b9061356e826133c3565b61357b60405191826130be565b828152809261358c601f19916133c3565b019060005b82811061359d57505050565b6020906135a8613516565b82828501015201613591565b6014548110156134b957601460005260206000209060011b0190600090565b80548210156134b95760005260206000209060011b0190600090565b90601a54906001600160a01b038216906001600160a01b0367ffffffffffffffff8460a01c16941693828514948580966136e1575b6136d957806080957fc0c3ee74e6d6070ee9c493e8b4f0477d2e66600f22997a4e073288d38d65933b97156136c4575b505067ffffffffffffffff831692828403613683575b50604051938452602084015260408301526060820152a1565b7fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff60a01b601a549260a01b16911617601a553861366a565b6001600160a01b03191617601a558038613654565b505050505050565b508167ffffffffffffffff841614613624565b919082039182116113ec57565b908060209392818452848401376000828201840152601f01601f1916010190565b90926080926001600160a01b0361321b9795168352602083015260408201528160608201520191613701565b91908110156134b95760051b0190565b929181156106695761377d336000526005602052604060002054151590565b156103865761378d3684836134cf565b6020815191012092600091825b848110613959575063ffffffff8316156136d9576137b99136916134cf565b90836000526016602052604060002090600182015463ffffffff811680156139375786600052601160205263ffffffff6137fa84826040600020541661499b565b16116139155763ffffffff60029160201c1692016001600160a01b0333166000528060205260ff60406000205460201c166138f5575b5063ffffffff61385d8192336000526010602052604060002088600052602052826040600020541661499b565b92169116116138d7575060005b8181106138775750505050565b80613885600192848761374e565b35600052600a6020526040600020548060005260086020528460406000208460ff8183015460e01c166138b781613149565b146138c6575b5050500161386a565b6138cf92614af7565b3884816138bd565b610ac39060405191829163038857ff60e01b8352336004840161455b565b336000908152602091909152604090205463ffffffff9081169250613830565b60405163b993868760e01b81526020600482015280610ac36024820187612fda565b60405163393f328760e11b81526020600482015280610ac36024820188612fda565b9261396584868961374e565b35600052600a60205260ff60016139816040600020543361490d565b015460e01c1661399081613149565b156139b35763ffffffff1663ffffffff81146113ec576001809101935b0161379a565b926001906139ad565b906139c6826133c3565b6139d360405191826130be565b82815280926139e4601f19916133c3565b019060005b8281106139f557505050565b602090604051613a048161304d565b6000815260008382015260006040820152828285010152016139e9565b90613a2f9082601454614520565b908115613b2657613a3f826139bc565b91600091825b828110613a9c5750508110613a58575090565b613a61816139bc565b9160005b828110613a725750505090565b80613a7f600192846134a5565b51613a8a82876134a5565b52613a9581866134a5565b5001613a65565b613aae613aa982846133db565b6135b4565b50600181015463ffffffff8160a01c1690428211613ad2575b505050600101613a45565b6001600160a01b039060409794975193613aeb8561304d565b5484521660208301526040820152613b0382876134a5565b52613b0e81866134a5565b5060001981146113ec57600180910193903880613ac7565b50506040516000613b386020836130be565b81526000805b818110613b4a57505090565b602090604051613b598161304d565b600081526000838201526000604082015282828601015201613b3e565b80634e487b7160e01b602492526041600452fd5b818110613b95575050565b60008155600101613b8a565b9190601f8111613bb057505050565b613bdc926000526020600020906020601f840160051c83019310613bde575b601f0160051c0190613b8a565b565b9091508190613bcf565b92909391844211613dba576001600160a01b038416613c14816000526005602052604060002054151590565b613d8d5781600052600760205260ff60406000205416613d5d57600090613c70613c8a613c3f6130e0565b6040519283916020830195878752604084015246606084015230608084015260e060a0840152610100830190612fda565b8a60c08301528660e083015203601f1981018352826130be565b5190207f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c52613ccb603c8220613cc53687876134cf565b90614fa9565b9091926004831015612b885782613d25575050506001600160a01b031660009081526003602052604090205460ff1615613d06575050505050565b90610ac3929160405195869563335d4ce160e01b875260048701613722565b5060405163d36ab6b960e01b81526060600482015291829160ff613d4d606485018a8a613701565b9216602484015260448301520390fd5b7f77a338580000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7fd9a5f5ca0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b846001600160a01b03857f502d038700000000000000000000000000000000000000000000000000000000600052166004524260245260445260646000fd5b939161321b95936001600160a01b03613e2093168652606060208701526060860191613701565b926040818503910152613701565b9091613e47336000526005602052604060002054151590565b156103865781600052600a60205260406000205490613e66823361490d565b60ff600182015460e01c16613e7a81613149565b613f4657613eaf9083600052601260205260406000205492836000526016602052613eb6604060002060405194858092613422565b03846130be565b613ec13682896134cf565b60208151910120809414613f3d57613f14613f28948387613f06613f38967f9b5361a5258ef6ac8039fd2d2ac276734695219cfd870711e7922c236e5db16d9a61472b565b61238c61238536878e6134cf565b604051938493604085526040850190612fda565b9083820360208501523397613701565b0390a3565b50505050505050565b7fd74915a80000000000000000000000000000000000000000000000000000000060005260046000fd5b604080516001600160a01b039092166020830190815290820192909252613f9a8160608101610c80565b51902060005260136020526040600020548015613fd95760001981019081116113ec576001613fcd63ffffffff926135b4565b50015460a01c16421090565b50600090565b9190613fec9136916134cf565b6020815191012060005260166020526001600160a01b036040600020911660005260028101602052604060002060206040519161402883613069565b549160ff63ffffffff841693848352831c161515918291015261405657506001015460201c63ffffffff1690565b905090565b90601b5468010000000000000000811015611188578060016140829201601b55601b6135d3565b929092611e05578051926003841015612ac857600160409160009560ff825491168060ff19831617835564ffffffff00602087015160081b169164ffffffffff191617178155019101519283519067ffffffffffffffff8211613b76576140ed82610ea585546133e8565b602090601f831160011461412b579061411c939495836141205750508160011b916000199060031b1c19161790565b9055565b015190503880610ec7565b90601f198316848352818320925b81811061417157509583600195969710614158575b505050811b019055565b015160001960f88460031b161c1916905538808061414e565b9192602060018192868b015181550194019201614139565b919392936141983683856134cf565b6020815191012094856000526016602052604060002090600182019063ffffffff82549416938463ffffffff82161490816144f6575b506144ec5763ffffffff8116928484116144c25780546141ed816133e8565b156143ef575b50508363ffffffff1983541617825567ffffffff0000000082549160201b169067ffffffff0000000019161790556040519560208701528160408701526040865261423f6060876130be565b6040519561424c8761304d565b60008752602087019663ffffffff4216885260408101918252601b54680100000000000000008110156111885780600161428b9201601b55601b6135d3565b919091611e055751906003821015612ac85760019160009964ffffffff0060ff84549316918260ff1985161785555160081b169164ffffffffff1916171781550190519687519067ffffffffffffffff8211613b76576142ef82610ea585546133e8565b602090601f831160011461436b579180917fe6a468e36669d9496095c02796a8a8dcda8ec8d551f6c7454948ecc68aac162d999a61434194926141205750508160011b916000199060031b1c19161790565b90555b61435b604051948594606086526060860191613701565b91602084015260408301520390a1565b98601f198316848b52828b209a5b8181106143d75750917fe6a468e36669d9496095c02796a8a8dcda8ec8d551f6c7454948ecc68aac162d999a918460019594106143be575b505050811b019055614344565b015160001960f88460031b161c191690553880806143b1565b838301518c556001909b019a60209384019301614379565b67ffffffffffffffff8711611188578661440b614411926133e8565b83613ba1565b600086601f811160011461445e578061443f9260009161445357508160011b916000199060031b1c19161790565b90555b61444b88615056565b5038806141f3565b905089013538611fda565b50818152602081209087601f198116825b8b8282106144a85750501061448e575b5050600186811b019055614442565b880135600019600389901b60f8161c19169055388061447f565b84013585556001909401936020938401938b93500161446f565b7fec623c5f0000000000000000000000000000000000000000000000000000000060005260046000fd5b5050505050509050565b905063ffffffff8083169160201c1614386141ce565b356001600160a01b03811681036102d85790565b8082101561455357828161453761321b95856133db565b111561454357506136f4565b61454e9150826133db565b6136f4565b505050600090565b6040906001600160a01b0361321b94931681528160208201520190612fda565b90614594610c809160405192839160208301958661455b565b51902090565b6145a2613516565b81600052600860205260406000206001810154926001600160a01b0384169283156146c057509160066146a5836114659567ffffffffffffffff6146b796549860ff8160e01c1692600052601260205260406000205460005260166020526040600020966040519a6146138c6130a1565b8b5260208b015260a01c16604089015261462c81613149565b6060880152604051614645816114658160028601613422565b608088015260405161465e816114658160038601613422565b60a0880152604051614677816114658160048601613422565b60c0880152604051614690816114658160058601613422565b60e08801526114656040518094819301613422565b61010085015260405192838092613422565b61012082015290565b935050505090565b6001600160a01b036001541633036146dc57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b909161471d61321b93604084526040840190613422565b916020818403910152613422565b7ff764e70143a953f513d351195b60c30d5fdaaca38edb60b262997f551e48868960018301916001600160a01b038354947c010000000000000000000000000000000000000000000000000000000060ff60e01b1987161785558260005260126020526147c1826040600020549716938760028401956147bb6040516147b581611465818c613422565b8261457b565b92614e80565b61480b8154604051908860208301526040820152604081526147e46060826130be565b604051906147f18261304d565b6002825263ffffffff42166020830152604082015261405b565b549354169360005260166020526040600020613f3860405192839283614706565b91614892906148799261483d6130e0565b916040519485936001600160a01b03602086019860018a5216604086015246606086015230608086015260e060a0860152610100850190612fda565b9160c084015260e083015203601f1981018352826130be565b5190207f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c526148cf603c600020613cc53685856134cf565b6004829593951015612ac857816148e7575050505090565b60ff613d4d60405195869563d36ab6b960e01b8752606060048801526064870191613701565b9060005260086020526040600020906001600160a01b03600183015416908115614959576001600160a01b0316809103614945575090565b6331ee6dc760e01b60005260045260246000fd5b7f871e01b20000000000000000000000000000000000000000000000000000000060005260046000fd5b63ffffffff60019116019063ffffffff82116113ec57565b9063ffffffff8091169116019063ffffffff82116113ec57565b90806000526016602052604060002090600182015463ffffffff81168015614ad55782600052601160205263ffffffff6149f76001826040600020541661499b565b1611614ab35763ffffffff60029160201c1692016001600160a01b0384166000528060205260ff60406000205460201c16614a8d575b506001600160a01b038316600052601060205260406000209060005260205263ffffffff80614a646001826040600020541661499b565b9216911611614a71575050565b610ac360405192839263038857ff60e01b84526004840161455b565b9091506001600160a01b03831660005260205263ffffffff604060002054169038614a2d565b60405163b993868760e01b81526020600482015280610ac36024820188612fda565b60405163393f328760e11b81526020600482015280610ac36024820189612fda565b7f7fdfd5efa814f8c90ef997a11cfbb29660e5af33312debb9c4898169a73f824a906001600160a01b036001840193614b4e8286541693876002840195614b486040516147b581611465818c613422565b92614d89565b60ff60e01b19855416855561480b815460405190886020830152604082015260408152614b7c6060826130be565b60405190614b898261304d565b6001825263ffffffff42166020830152604082015261405b565b614bad81546133e8565b9081614bb7575050565b81601f60009311600114614bc9575055565b81835260208320614be591601f0160051c810190600101613b8a565b8082528160208120915555565b906147b5907f48f05f657e3e9a02bfe546c4d3961f08b1f9a0f9798b13fcbc2231173b1ecd94614d11614c80614d1f6001600160a01b036001860195865460ff8a848316614c4e611465600287019d8e60405192838092613422565b938491836000526012602052604060002054948592836000526016602052614c8760406000206040519d8e8092613422565b038d6130be565b60e01c16614c9481613149565b15614d77575b50505050600052600d602052614cb48a60406000206151d6565b5082885416600052600e602052614ccf8a60406000206151d6565b506000526009602052614ce68960406000206151d6565b508054600052600a602052600060408120555495541695604051938493604085526040850190612fda565b908382036020850152613422565b0390a36000526008602052600660406000206000815560006001820155614d4860028201614ba3565b614d5460038201614ba3565b614d6060048201614ba3565b614d6c60058201614ba3565b01614bad81546133e8565b614d8093614e80565b8a828238614c9a565b9192906001600160a01b0316806000526010602052604060002084600052602052604060002063ffffffff614dc081835416614983565b1663ffffffff19825416179055836000526011602052604060002063ffffffff614dec81835416614983565b1663ffffffff1982541617905583600052600c602052614e108360406000206150b0565b50600052600b602052614e278260406000206150b0565b50600052600f602052614e3e8160406000206150b0565b506000526012602052604060002055565b80548210156134b95760005260206000200190600090565b63ffffffff6000199116019063ffffffff82116113ec57565b9291906001600160a01b031680600052600b602052614ea38460406000206151d6565b5081600052600c602052614ebb8460406000206151d6565b506000526010602052604060002081600052602052604060002063ffffffff614ee681835416614e67565b1663ffffffff198254161790556000526011602052604060002063ffffffff614f1181835416614e67565b1663ffffffff19825416179055600052600f602052614f348160406000206151d6565b50600052601260205260006040812055565b80600052600660205260406000205490811580614f93575b614f66575090565b7f02b566860000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5080600052600560205260406000205415614f5e565b8151919060418303614fda57614fd392506020820151906060604084015193015160001a90615293565b9192909190565b505060009160029190565b80600052600560205260406000205415600014613fd957600454680100000000000000008110156111885761503d6150268260018594016004556004614e4f565b819391549060031b91821b91600019901b19161790565b9055600454906000526005602052604060002055600190565b80600052601860205260406000205415600014613fd95760175468010000000000000000811015611188576150976150268260018594016017556017614e4f565b9055601754906000526018602052604060002055600190565b6000828152600182016020526040902054615105578054906801000000000000000082101561118857826150ee615026846001809601855584614e4f565b905580549260005201602052604060002055600190565b5050600090565b60008181526005602052604090205480156151055760001981018181116113ec576004546000198101919082116113ec5781810361519c575b50505060045480156151865760001901615160816004614e4f565b8154906000199060031b1b19169055600455600052600560205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b6151be6151ad615026936004614e4f565b90549060031b1c9283926004614e4f565b90556000526005602052604060002055388080615145565b906001820191816000528260205260406000205480151560001461528a5760001981018181116113ec5782546000198101919082116113ec57818103615253575b505050805480156151865760001901906152318282614e4f565b8154906000199060031b1b191690555560005260205260006040812055600190565b6152736152636150269386614e4f565b90549060031b1c92839286614e4f565b905560005283602052604060002055388080615217565b50505050600090565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161531c579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15615310576000516001600160a01b038116156153045790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b5050506000916003919056fea164736f6c634300081a000a", } var WorkflowRegistryABI = WorkflowRegistryMetaData.ABI diff --git a/gethwrappers/workflow/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/gethwrappers/workflow/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 21cfe64416..5852d96b03 100644 --- a/gethwrappers/workflow/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/gethwrappers/workflow/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -1,4 +1,4 @@ GETH_VERSION: 1.16.2 capabilities_registry_wrapper_v2_dev: ../../contracts/solc/workflow/dev/v2/CapabilitiesRegistry/CapabilitiesRegistry.sol/CapabilitiesRegistry.abi.json ../../contracts/solc/workflow/dev/v2/CapabilitiesRegistry/CapabilitiesRegistry.sol/CapabilitiesRegistry.bin 97b005187fda8b7cc6013d92a5657d9dbf8755b36ace599de9746c29b9550e99 workflow_registry_wrapper_v1: ../../contracts/solc/workflow/v1/WorkflowRegistry/WorkflowRegistry.sol/WorkflowRegistry.abi.json ../../contracts/solc/workflow/v1/WorkflowRegistry/WorkflowRegistry.sol/WorkflowRegistry.bin 5adc185ac7dabf6f75297855adc0d77e0bfe64af6491de944083fb10f6f9fb06 -workflow_registry_wrapper_v2_dev: ../../contracts/solc/workflow/dev/v2/WorkflowRegistry/WorkflowRegistry.sol/WorkflowRegistry.abi.json ../../contracts/solc/workflow/dev/v2/WorkflowRegistry/WorkflowRegistry.sol/WorkflowRegistry.bin 202d65bd985064c25ed347ef1f7c6cecbefe8859bda7285a87c333ef5e8ceb0c +workflow_registry_wrapper_v2_dev: ../../contracts/solc/workflow/dev/v2/WorkflowRegistry/WorkflowRegistry.sol/WorkflowRegistry.abi.json ../../contracts/solc/workflow/dev/v2/WorkflowRegistry/WorkflowRegistry.sol/WorkflowRegistry.bin c020040c2949ef5f5de9830a11d3e340a3f3f9adcc7ded2d9588d2520d6996f1