@aztec-foundation/l1-artifacts 6.0.0-rc.4 → 6.0.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/AttesterExitExtLibAbi.d.ts +12 -0
- package/dest/AttesterExitExtLibAbi.d.ts.map +1 -1
- package/dest/AttesterExitExtLibAbi.js +16 -0
- package/dest/AttesterExitExtLibAbi.js.map +1 -1
- package/dest/AttesterExitExtLibBytecode.d.ts +1 -1
- package/dest/AttesterExitExtLibBytecode.js +1 -1
- package/dest/CoinIssuerAbi.d.ts +12 -0
- package/dest/CoinIssuerAbi.d.ts.map +1 -1
- package/dest/CoinIssuerAbi.js +16 -0
- package/dest/CoinIssuerAbi.js.map +1 -1
- package/dest/DateGatedRelayerAbi.d.ts +12 -0
- package/dest/DateGatedRelayerAbi.d.ts.map +1 -1
- package/dest/DateGatedRelayerAbi.js +16 -0
- package/dest/DateGatedRelayerAbi.js.map +1 -1
- package/dest/EmpireBaseAbi.d.ts +12 -0
- package/dest/EmpireBaseAbi.d.ts.map +1 -1
- package/dest/EmpireBaseAbi.js +16 -0
- package/dest/EmpireBaseAbi.js.map +1 -1
- package/dest/EpochProofExtLibAbi.d.ts +12 -0
- package/dest/EpochProofExtLibAbi.d.ts.map +1 -1
- package/dest/EpochProofExtLibAbi.js +16 -0
- package/dest/EpochProofExtLibAbi.js.map +1 -1
- package/dest/EpochProofExtLibBytecode.d.ts +1 -1
- package/dest/EpochProofExtLibBytecode.js +1 -1
- package/dest/ErrorsAbi.d.ts +12 -0
- package/dest/ErrorsAbi.d.ts.map +1 -1
- package/dest/ErrorsAbi.js +16 -0
- package/dest/ErrorsAbi.js.map +1 -1
- package/dest/EscapeHatchAbi.d.ts +22 -0
- package/dest/EscapeHatchAbi.d.ts.map +1 -1
- package/dest/EscapeHatchAbi.js +29 -0
- package/dest/EscapeHatchAbi.js.map +1 -1
- package/dest/EscapeHatchBytecode.d.ts +1 -1
- package/dest/EscapeHatchBytecode.d.ts.map +1 -1
- package/dest/EscapeHatchBytecode.js +1 -1
- package/dest/EscapeHatchBytecode.js.map +1 -1
- package/dest/EscapeHatchStorage.d.ts +8 -8
- package/dest/EscapeHatchStorage.js +8 -8
- package/dest/FeeAssetHandlerAbi.d.ts +12 -0
- package/dest/FeeAssetHandlerAbi.d.ts.map +1 -1
- package/dest/FeeAssetHandlerAbi.js +16 -0
- package/dest/FeeAssetHandlerAbi.js.map +1 -1
- package/dest/FeeJuicePortalAbi.d.ts +12 -0
- package/dest/FeeJuicePortalAbi.d.ts.map +1 -1
- package/dest/FeeJuicePortalAbi.js +16 -0
- package/dest/FeeJuicePortalAbi.js.map +1 -1
- package/dest/FeeJuicePortalBytecode.d.ts +1 -1
- package/dest/FeeJuicePortalBytecode.js +1 -1
- package/dest/GSEAbi.d.ts +12 -0
- package/dest/GSEAbi.d.ts.map +1 -1
- package/dest/GSEAbi.js +16 -0
- package/dest/GSEAbi.js.map +1 -1
- package/dest/GovernanceAbi.d.ts +12 -0
- package/dest/GovernanceAbi.d.ts.map +1 -1
- package/dest/GovernanceAbi.js +16 -0
- package/dest/GovernanceAbi.js.map +1 -1
- package/dest/GovernanceProposerAbi.d.ts +12 -0
- package/dest/GovernanceProposerAbi.d.ts.map +1 -1
- package/dest/GovernanceProposerAbi.js +16 -0
- package/dest/GovernanceProposerAbi.js.map +1 -1
- package/dest/HonkVerifierAbi.d.ts +12 -0
- package/dest/HonkVerifierAbi.d.ts.map +1 -1
- package/dest/HonkVerifierAbi.js +16 -0
- package/dest/HonkVerifierAbi.js.map +1 -1
- package/dest/IERC20Abi.d.ts +12 -0
- package/dest/IERC20Abi.d.ts.map +1 -1
- package/dest/IERC20Abi.js +16 -0
- package/dest/IERC20Abi.js.map +1 -1
- package/dest/ISequencerRewardCalculatorAbi.d.ts +12 -0
- package/dest/ISequencerRewardCalculatorAbi.d.ts.map +1 -1
- package/dest/ISequencerRewardCalculatorAbi.js +16 -0
- package/dest/ISequencerRewardCalculatorAbi.js.map +1 -1
- package/dest/IVerifierAbi.d.ts +12 -0
- package/dest/IVerifierAbi.d.ts.map +1 -1
- package/dest/IVerifierAbi.js +16 -0
- package/dest/IVerifierAbi.js.map +1 -1
- package/dest/InboxAbi.d.ts +12 -0
- package/dest/InboxAbi.d.ts.map +1 -1
- package/dest/InboxAbi.js +16 -0
- package/dest/InboxAbi.js.map +1 -1
- package/dest/InboxBytecode.d.ts +1 -1
- package/dest/InboxBytecode.js +1 -1
- package/dest/MockVerifierAbi.d.ts +12 -0
- package/dest/MockVerifierAbi.d.ts.map +1 -1
- package/dest/MockVerifierAbi.js +16 -0
- package/dest/MockVerifierAbi.js.map +1 -1
- package/dest/MockZKPassportVerifierAbi.d.ts +12 -0
- package/dest/MockZKPassportVerifierAbi.d.ts.map +1 -1
- package/dest/MockZKPassportVerifierAbi.js +16 -0
- package/dest/MockZKPassportVerifierAbi.js.map +1 -1
- package/dest/MultiAdderAbi.d.ts +12 -0
- package/dest/MultiAdderAbi.d.ts.map +1 -1
- package/dest/MultiAdderAbi.js +16 -0
- package/dest/MultiAdderAbi.js.map +1 -1
- package/dest/MultiAdderBytecode.d.ts +1 -1
- package/dest/MultiAdderBytecode.js +1 -1
- package/dest/NewGovernanceProposerPayloadAbi.d.ts +12 -0
- package/dest/NewGovernanceProposerPayloadAbi.d.ts.map +1 -1
- package/dest/NewGovernanceProposerPayloadAbi.js +16 -0
- package/dest/NewGovernanceProposerPayloadAbi.js.map +1 -1
- package/dest/OutboxAbi.d.ts +12 -0
- package/dest/OutboxAbi.d.ts.map +1 -1
- package/dest/OutboxAbi.js +16 -0
- package/dest/OutboxAbi.js.map +1 -1
- package/dest/OutboxBytecode.d.ts +1 -1
- package/dest/OutboxBytecode.js +1 -1
- package/dest/RegisterNewRollupVersionPayloadAbi.d.ts +40 -0
- package/dest/RegisterNewRollupVersionPayloadAbi.d.ts.map +1 -1
- package/dest/RegisterNewRollupVersionPayloadAbi.js +52 -0
- package/dest/RegisterNewRollupVersionPayloadAbi.js.map +1 -1
- package/dest/RegisterNewRollupVersionPayloadBytecode.d.ts +1 -1
- package/dest/RegisterNewRollupVersionPayloadBytecode.d.ts.map +1 -1
- package/dest/RegisterNewRollupVersionPayloadBytecode.js +1 -1
- package/dest/RegisterNewRollupVersionPayloadBytecode.js.map +1 -1
- package/dest/RegistryAbi.d.ts +12 -0
- package/dest/RegistryAbi.d.ts.map +1 -1
- package/dest/RegistryAbi.js +16 -0
- package/dest/RegistryAbi.js.map +1 -1
- package/dest/RewardDistributorAbi.d.ts +12 -0
- package/dest/RewardDistributorAbi.d.ts.map +1 -1
- package/dest/RewardDistributorAbi.js +16 -0
- package/dest/RewardDistributorAbi.js.map +1 -1
- package/dest/RewardExtLibAbi.d.ts +12 -0
- package/dest/RewardExtLibAbi.d.ts.map +1 -1
- package/dest/RewardExtLibAbi.js +16 -0
- package/dest/RewardExtLibAbi.js.map +1 -1
- package/dest/RewardExtLibBytecode.d.ts +1 -1
- package/dest/RewardExtLibBytecode.js +1 -1
- package/dest/RollupAbi.d.ts +12 -0
- package/dest/RollupAbi.d.ts.map +1 -1
- package/dest/RollupAbi.js +16 -0
- package/dest/RollupAbi.js.map +1 -1
- package/dest/RollupBytecode.d.ts +1 -1
- package/dest/RollupBytecode.js +1 -1
- package/dest/RollupOperationsExtLibAbi.d.ts +12 -0
- package/dest/RollupOperationsExtLibAbi.d.ts.map +1 -1
- package/dest/RollupOperationsExtLibAbi.js +16 -0
- package/dest/RollupOperationsExtLibAbi.js.map +1 -1
- package/dest/RollupOperationsExtLibBytecode.d.ts +1 -1
- package/dest/RollupOperationsExtLibBytecode.js +1 -1
- package/dest/SlasherAbi.d.ts +12 -0
- package/dest/SlasherAbi.d.ts.map +1 -1
- package/dest/SlasherAbi.js +16 -0
- package/dest/SlasherAbi.js.map +1 -1
- package/dest/SlasherDeploymentExtLibAbi.d.ts +12 -0
- package/dest/SlasherDeploymentExtLibAbi.d.ts.map +1 -1
- package/dest/SlasherDeploymentExtLibAbi.js +16 -0
- package/dest/SlasherDeploymentExtLibAbi.js.map +1 -1
- package/dest/SlasherDeploymentExtLibBytecode.d.ts +1 -1
- package/dest/SlasherDeploymentExtLibBytecode.js +1 -1
- package/dest/SlashingProposerAbi.d.ts +12 -0
- package/dest/SlashingProposerAbi.d.ts.map +1 -1
- package/dest/SlashingProposerAbi.js +16 -0
- package/dest/SlashingProposerAbi.js.map +1 -1
- package/dest/SlashingProposerBytecode.d.ts +1 -1
- package/dest/SlashingProposerBytecode.js +1 -1
- package/dest/StakingAssetHandlerAbi.d.ts +12 -0
- package/dest/StakingAssetHandlerAbi.d.ts.map +1 -1
- package/dest/StakingAssetHandlerAbi.js +16 -0
- package/dest/StakingAssetHandlerAbi.js.map +1 -1
- package/dest/TestERC20Abi.d.ts +12 -0
- package/dest/TestERC20Abi.d.ts.map +1 -1
- package/dest/TestERC20Abi.js +16 -0
- package/dest/TestERC20Abi.js.map +1 -1
- package/dest/TokenPortalAbi.d.ts +12 -0
- package/dest/TokenPortalAbi.d.ts.map +1 -1
- package/dest/TokenPortalAbi.js +16 -0
- package/dest/TokenPortalAbi.js.map +1 -1
- package/dest/TokenPortalBytecode.d.ts +1 -1
- package/dest/TokenPortalBytecode.js +1 -1
- package/dest/UniswapPortalAbi.d.ts +12 -0
- package/dest/UniswapPortalAbi.d.ts.map +1 -1
- package/dest/UniswapPortalAbi.js +16 -0
- package/dest/UniswapPortalAbi.js.map +1 -1
- package/dest/UniswapPortalBytecode.d.ts +1 -1
- package/dest/UniswapPortalBytecode.js +1 -1
- package/dest/ValidatorOperationsExtLibAbi.d.ts +12 -0
- package/dest/ValidatorOperationsExtLibAbi.d.ts.map +1 -1
- package/dest/ValidatorOperationsExtLibAbi.js +16 -0
- package/dest/ValidatorOperationsExtLibAbi.js.map +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.d.ts +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.d.ts.map +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.js +1 -1
- package/dest/ValidatorOperationsExtLibBytecode.js.map +1 -1
- package/dest/ValidatorSelectionLibAbi.d.ts +12 -0
- package/dest/ValidatorSelectionLibAbi.d.ts.map +1 -1
- package/dest/ValidatorSelectionLibAbi.js +16 -0
- package/dest/ValidatorSelectionLibAbi.js.map +1 -1
- package/dest/ValidatorSelectionLibBytecode.d.ts +1 -1
- package/dest/ValidatorSelectionLibBytecode.js +1 -1
- package/dest/checksum.d.ts +1 -1
- package/dest/checksum.js +1 -1
- package/l1-contracts/cache/solidity-files-cache.json +1 -1
- package/l1-contracts/foundry.toml +1 -0
- package/l1-contracts/out/AddressSnapshotLib.sol/AddressSnapshotLib.json +1 -1
- package/l1-contracts/out/AttestationLib.sol/AttestationLib.json +1 -1
- package/l1-contracts/out/AttesterExitExtLib.sol/AttesterExitExtLib.json +1 -1
- package/l1-contracts/out/BN254Lib.sol/BN254Lib.json +1 -1
- package/l1-contracts/out/Ballot.sol/BallotLib.json +1 -1
- package/l1-contracts/out/BlobLib.sol/BlobLib.json +1 -1
- package/l1-contracts/out/Bn254LibWrapper.sol/Bn254LibWrapper.json +1 -1
- package/l1-contracts/out/CheckpointLog.sol/CompressedTempCheckpointLogLib.json +1 -1
- package/l1-contracts/out/CheckpointedUintLib.sol/CheckpointedUintLib.json +1 -1
- package/l1-contracts/out/CoinIssuer.sol/CoinIssuer.json +1 -1
- package/l1-contracts/out/CompressedTimeMath.sol/CompressedTimeMath.json +1 -1
- package/l1-contracts/out/Configuration.sol/CompressedConfigurationLib.json +1 -1
- package/l1-contracts/out/ConfigurationLib.sol/ConfigurationLib.json +1 -1
- package/l1-contracts/out/ConstantsGen.sol/Constants.json +1 -1
- package/l1-contracts/out/CoordinationSignatureLib.sol/CoordinationSignatureLib.json +1 -1
- package/l1-contracts/out/DataStructures.sol/DataStructures.json +1 -1
- package/l1-contracts/out/DateGatedRelayer.sol/DateGatedRelayer.json +1 -1
- package/l1-contracts/out/DeployAztecL1Contracts.s.sol/DeployAztecL1Contracts.json +1 -1
- package/l1-contracts/out/DeployRollupForUpgrade.s.sol/DeployRollupForUpgrade.json +1 -1
- package/l1-contracts/out/DeployRollupLib.sol/DeployRollupLib.json +1 -1
- package/l1-contracts/out/DeploymentConfiguration.sol/DeploymentConfiguration.json +1 -1
- package/l1-contracts/out/DeploymentConfiguration.sol/IDeploymentConfiguration.json +1 -1
- package/l1-contracts/out/DepositDelegationLib.sol/DepositDelegationLib.json +1 -1
- package/l1-contracts/out/EmpireBase.sol/EmpireBase.json +1 -1
- package/l1-contracts/out/EpochProofExtLib.sol/EpochProofExtLib.json +1 -1
- package/l1-contracts/out/EpochProofLib.sol/EpochProofLib.json +1 -1
- package/l1-contracts/out/Errors.sol/Errors.json +1 -1
- package/l1-contracts/out/EscapeHatch.sol/EscapeHatch.json +1 -1
- package/l1-contracts/out/FeeAssetHandler.sol/FeeAssetHandler.json +1 -1
- package/l1-contracts/out/FeeAssetHandler.sol/IFeeAssetHandler.json +1 -1
- package/l1-contracts/out/FeeConfig.sol/FeeConfigLib.json +1 -1
- package/l1-contracts/out/FeeConfig.sol/PriceLib.json +1 -1
- package/l1-contracts/out/FeeJuicePortal.sol/FeeJuicePortal.json +1 -1
- package/l1-contracts/out/FeeLib.sol/FeeLib.json +1 -1
- package/l1-contracts/out/FeeStructs.sol/FeeHeaderLib.json +1 -1
- package/l1-contracts/out/FeeStructs.sol/FeeStructsLib.json +1 -1
- package/l1-contracts/out/FieldLib.sol/FieldLib.json +1 -1
- package/l1-contracts/out/FlushEntryQueue.s.sol/FlushEntryQueue.json +1 -0
- package/l1-contracts/out/FlushRewarder.sol/FlushRewarder.json +1 -1
- package/l1-contracts/out/GSE.sol/GSE.json +1 -1
- package/l1-contracts/out/GSE.sol/GSECore.json +1 -1
- package/l1-contracts/out/GSE.sol/IGSE.json +1 -1
- package/l1-contracts/out/GSE.sol/IGSECore.json +1 -1
- package/l1-contracts/out/GSEPayload.sol/GSEPayload.json +1 -1
- package/l1-contracts/out/Governance.sol/Governance.json +1 -1
- package/l1-contracts/out/GovernanceProposer.sol/GovernanceProposer.json +1 -1
- package/l1-contracts/out/Hash.sol/Hash.json +1 -1
- package/l1-contracts/out/HonkVerifier.sol/HonkVerifier.json +1 -1
- package/l1-contracts/out/IBn254LibWrapper.sol/IBn254LibWrapper.json +1 -1
- package/l1-contracts/out/ICoinIssuer.sol/ICoinIssuer.json +1 -1
- package/l1-contracts/out/IDateGatedRelayer.sol/IDateGatedRelayer.json +1 -1
- package/l1-contracts/out/IEmpire.sol/IEmperor.json +1 -1
- package/l1-contracts/out/IEmpire.sol/IEmpire.json +1 -1
- package/l1-contracts/out/IEscapeHatch.sol/IEscapeHatch.json +1 -1
- package/l1-contracts/out/IEscapeHatch.sol/IEscapeHatchCore.json +1 -1
- package/l1-contracts/out/IFeeJuicePortal.sol/IFeeJuicePortal.json +1 -1
- package/l1-contracts/out/IFlushRewarder.sol/IFlushRewarder.json +1 -1
- package/l1-contracts/out/IGovernance.sol/IGovernance.json +1 -1
- package/l1-contracts/out/IGovernanceProposer.sol/IGovernanceProposer.json +1 -1
- package/l1-contracts/out/IInbox.sol/IInbox.json +1 -1
- package/l1-contracts/out/IInstance.sol/IInstance.json +1 -1
- package/l1-contracts/out/IMintableERC20.sol/IMintableERC20.json +1 -1
- package/l1-contracts/out/IOutbox.sol/IOutbox.json +1 -1
- package/l1-contracts/out/IPayload.sol/IPayload.json +1 -1
- package/l1-contracts/out/IProposerPayload.sol/IProposerPayload.json +1 -1
- package/l1-contracts/out/IRegistry.sol/IHaveVersion.json +1 -1
- package/l1-contracts/out/IRegistry.sol/IRegistry.json +1 -1
- package/l1-contracts/out/IRewardDistributor.sol/IRewardDistributor.json +1 -1
- package/l1-contracts/out/IRollup.sol/IRollup.json +1 -1
- package/l1-contracts/out/IRollup.sol/IRollupCore.json +1 -1
- package/l1-contracts/out/IRootRegistry.sol/IRootRegistry.json +1 -1
- package/l1-contracts/out/ISequencerRewardCalculator.sol/ISequencerRewardCalculator.json +1 -1
- package/l1-contracts/out/ISlasher.sol/ISlasher.json +1 -1
- package/l1-contracts/out/IStaking.sol/IStaking.json +1 -1
- package/l1-contracts/out/IStaking.sol/IStakingCore.json +1 -1
- package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelection.json +1 -1
- package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelectionCore.json +1 -1
- package/l1-contracts/out/IVerifier.sol/IVerifier.json +1 -1
- package/l1-contracts/out/Inbox.sol/Inbox.json +1 -1
- package/l1-contracts/out/InputsExtractor.sol/InputsExtractor.json +1 -1
- package/l1-contracts/out/InvalidateLib.sol/InvalidateLib.json +1 -1
- package/l1-contracts/out/MerkleLib.sol/MerkleLib.json +1 -1
- package/l1-contracts/out/MockERC20.sol/MockERC20.json +1 -1
- package/l1-contracts/out/MockERC721.sol/MockERC721.json +1 -1
- package/l1-contracts/out/MockFeeJuicePortal.sol/MockFeeJuicePortal.json +1 -1
- package/l1-contracts/out/MockVerifier.sol/MockVerifier.json +1 -1
- package/l1-contracts/out/MockZKPassportVerifier.sol/IZKPassportVerifier.json +1 -1
- package/l1-contracts/out/MockZKPassportVerifier.sol/MockZKPassportVerifier.json +1 -1
- package/l1-contracts/out/MultiAdder.sol/IMultiAdder.json +1 -1
- package/l1-contracts/out/MultiAdder.sol/MultiAdder.json +1 -1
- package/l1-contracts/out/Outbox.sol/Outbox.json +1 -1
- package/l1-contracts/out/OuterCount8.sol/HonkVerifier.json +1 -1
- package/l1-contracts/out/Proposal.sol/CompressedProposalLib.json +1 -1
- package/l1-contracts/out/ProposalLib.sol/ProposalLib.json +1 -1
- package/l1-contracts/out/ProposeLib.sol/ProposeLib.json +1 -1
- package/l1-contracts/out/ProposedHeaderLib.sol/ProposedHeaderLib.json +1 -1
- package/l1-contracts/out/RegisterNewRollupVersionPayload.sol/RegisterNewRollupVersionPayload.json +1 -1
- package/l1-contracts/out/Registry.sol/Registry.json +1 -1
- package/l1-contracts/out/RewardBooster.sol/IBooster.json +1 -1
- package/l1-contracts/out/RewardBooster.sol/IBoosterCore.json +1 -1
- package/l1-contracts/out/RewardBooster.sol/RewardBooster.json +1 -1
- package/l1-contracts/out/RewardDistributor.sol/RewardDistributor.json +1 -1
- package/l1-contracts/out/RewardExtLib.sol/RewardExtLib.json +1 -1
- package/l1-contracts/out/RewardLib.sol/BpsLib.json +1 -1
- package/l1-contracts/out/RewardLib.sol/RewardLib.json +1 -1
- package/l1-contracts/out/Rollup.sol/Rollup.json +1 -1
- package/l1-contracts/out/RollupConfiguration.sol/IRollupConfiguration.json +1 -1
- package/l1-contracts/out/RollupConfiguration.sol/RollupConfiguration.json +1 -1
- package/l1-contracts/out/RollupCore.sol/RollupCore.json +1 -1
- package/l1-contracts/out/RollupOperationsExtLib.sol/RollupOperationsExtLib.json +1 -1
- package/l1-contracts/out/STFLib.sol/STFLib.json +1 -1
- package/l1-contracts/out/SampleLib.sol/SampleLib.json +1 -1
- package/l1-contracts/out/SequencerRewardCalculatorLib.sol/SequencerRewardCalculatorLib.json +1 -1
- package/l1-contracts/out/SignatureLib.sol/SignatureLib.json +1 -1
- package/l1-contracts/out/SlashPayload.sol/SlashPayload.json +1 -1
- package/l1-contracts/out/SlashPayloadCloneable.sol/SlashPayloadCloneable.json +1 -1
- package/l1-contracts/out/SlashPayloadLib.sol/SlashPayloadLib.json +1 -1
- package/l1-contracts/out/SlashRoundLib.sol/CompressedSlashRoundMath.json +1 -1
- package/l1-contracts/out/Slasher.sol/Slasher.json +1 -1
- package/l1-contracts/out/SlasherDeploymentExtLib.sol/SlasherDeploymentExtLib.json +1 -1
- package/l1-contracts/out/SlashingProposer.sol/SlashingProposer.json +1 -1
- package/l1-contracts/out/StakingAssetHandler.sol/IStakingAssetHandler.json +1 -1
- package/l1-contracts/out/StakingAssetHandler.sol/StakingAssetHandler.json +1 -1
- package/l1-contracts/out/StakingLib.sol/StakingLib.json +1 -1
- package/l1-contracts/out/StakingQueue.sol/StakingQueueLib.json +1 -1
- package/l1-contracts/out/StakingQueueConfig.sol/StakingQueueConfigLib.json +1 -1
- package/l1-contracts/out/StdError.sol/stdError.json +1 -1
- package/l1-contracts/out/TestERC20.sol/TestERC20.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/CallAssetPayload.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/CallRevertingPayload.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/EmptyPayload.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/FakeRollup.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/RevertingCall.json +1 -1
- package/l1-contracts/out/TestPayloads.sol/UpgradePayload.json +1 -1
- package/l1-contracts/out/TimeLib.sol/TimeLib.json +1 -1
- package/l1-contracts/out/Tips.sol/ChainTipsLib.json +1 -1
- package/l1-contracts/out/ValidatorOperationsExtLib.sol/ValidatorOperationsExtLib.json +1 -1
- package/l1-contracts/out/ValidatorSelectionLib.sol/ValidatorSelectionLib.json +1 -1
- package/l1-contracts/out/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
- package/l1-contracts/out/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
- package/l1-contracts/out/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
- package/l1-contracts/out/build-info/018c24616ac5aeef.json +1 -0
- package/l1-contracts/out/generated/HonkVerifier.sol/HonkVerifier.json +1 -1
- package/l1-contracts/out/libraries/Errors.sol/Errors.json +1 -1
- package/l1-contracts/out/rollup/BlobLib.sol/BlobLib.json +1 -1
- package/l1-contracts/out/src/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
- package/l1-contracts/out/src/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
- package/l1-contracts/out/src/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
- package/l1-contracts/script/deploy/DeployRollupLib.sol +5 -12
- package/l1-contracts/script/deploy/FlushEntryQueue.s.sol +32 -0
- package/l1-contracts/scripts/forge_broadcast.js +104 -34
- package/l1-contracts/scripts/network-defaults.json +1 -1
- package/l1-contracts/src/core/EscapeHatch.sol +56 -12
- package/l1-contracts/src/core/interfaces/IEscapeHatch.sol +1 -0
- package/l1-contracts/src/core/interfaces/IStaking.sol +11 -0
- package/l1-contracts/src/core/libraries/ConstantsGen.sol +1 -1
- package/l1-contracts/src/core/libraries/Errors.sol +1 -0
- package/l1-contracts/src/core/libraries/rollup/FeeLib.sol +7 -12
- package/l1-contracts/src/core/libraries/rollup/StakingLib.sol +117 -12
- package/l1-contracts/src/core/libraries/rollup/ValidatorSelectionLib.sol +8 -6
- package/l1-contracts/src/periphery/RegisterNewRollupVersionPayload.sol +30 -10
- package/package.json +1 -1
- package/l1-contracts/out/build-info/4cb7b5442b848dcc.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"constructor","inputs":[{"name":"__owner","type":"address","internalType":"address"},{"name":"_asset","type":"address","internalType":"contract IERC20"},{"name":"_activationThreshold","type":"uint256","internalType":"uint256"},{"name":"_ejectionThreshold","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"ACTIVATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ASSET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"BONUS_INSTANCE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"EJECTION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addRollup","inputs":[{"name":"_rollup","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"},{"name":"_delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_withdrawer","type":"address","internalType":"address"},{"name":"_publicKeyInG1","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_publicKeyInG2","type":"tuple","internalType":"struct G2Point","components":[{"name":"x0","type":"uint256","internalType":"uint256"},{"name":"x1","type":"uint256","internalType":"uint256"},{"name":"y0","type":"uint256","internalType":"uint256"},{"name":"y1","type":"uint256","internalType":"uint256"}]},{"name":"_proofOfPossession","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_moveWithLatestRollup","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"effectiveBalanceOf","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeWithdraw","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAttesterCountAtTime","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterFromIndexAtTime","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAttestersFromIndicesAtTime","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"},{"name":"_indices","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getBonusInstanceAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getConfig","inputs":[{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct AttesterConfig","components":[{"name":"publicKey","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"withdrawer","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getDelegatee","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getG1PublicKeysFromAddresses","inputs":[{"name":"_attesters","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct G1Point[]","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getGovernance","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Governance"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollup","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollupAt","inputs":[{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPowerUsed","inputs":[{"name":"_delegatee","type":"address","internalType":"address"},{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegistrationDigest","inputs":[{"name":"_publicKey","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getVotingPower","inputs":[{"name":"_delegatee","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVotingPowerAt","inputs":[{"name":"_delegatee","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawer","inputs":[{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawer","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRollupRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownedPKs","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"isRegistered","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proofOfPossessionGasLimit","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"proposeWithLock","inputs":[{"name":"_payload","type":"address","internalType":"contract IPayload"},{"name":"_to","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGovernance","inputs":[{"name":"_governance","type":"address","internalType":"contract Governance"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProofOfPossessionGasLimit","inputs":[{"name":"_proofOfPossessionGasLimit","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supplyOf","inputs":[{"name":"_instance","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vote","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"voteWithBonus","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"DelegateChanged","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"oldDelegatee","type":"address","indexed":false,"internalType":"address"},{"name":"newDelegatee","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegatee","type":"address","indexed":true,"internalType":"address"},{"name":"oldValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"instance","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero","inputs":[]},{"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"size","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"Delegation__InsufficientPower","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__AlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__CannotChangePublicKeys","inputs":[{"name":"existingPk1x","type":"uint256","internalType":"uint256"},{"name":"existingPk1y","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__FailedToRemove","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__FatalError","inputs":[{"name":"","type":"string","internalType":"string"}]},{"type":"error","name":"GSE__GovernanceAlreadySet","inputs":[]},{"type":"error","name":"GSE__InstanceDoesNotExist","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__InsufficientBalance","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__InvalidProofOfPossession","inputs":[]},{"type":"error","name":"GSE__InvalidRollupAddress","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotLatestRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotWithdrawer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NothingToExit","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__OutOfBounds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__ProofOfPossessionAlreadySeen","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"GSE__RollupAlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__CheckpointedUintLib__NotInPast","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6101006040526040516100119061016c565b604051809103905ff08015801561002a573d5f5f3e3d5ffd5b506001600160a01b031660805260088054600160a01b600160e01b031916613d0960a41b17905534801561005c575f5ffd5b506040516141f73803806141f783398101604081905261007b91610190565b83838383836001600160a01b0381166100ad57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100b68161011d565b506001600160a01b0390921660e05260a05260c0525050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5250506002602052507f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51a805460ff191660011790556101d5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a5c8061379b83390190565b6001600160a01b038116811461018d575f5ffd5b50565b5f5f5f5f608085870312156101a3575f5ffd5b84516101ae81610179565b60208601519094506101bf81610179565b6040860151606090960151949790965092505050565b60805160a05160c05160e05161354d61024e5f395f8181610372015281816109ac015281816109eb01528181610fca015261103501525f8181610550015261151e01525f818161050301528181610f9901528181610fee0152818161106401526110f301525f81816108060152611be2015261354d5ff3fe608060405234801561000f575f5ffd5b506004361061023e575f3560e01c80636a91551611610135578063bb4d4436116100b4578063ec6e69db11610079578063ec6e69db1461062d578063f2fde38b14610640578063f3fef3a314610653578063f7888aec14610681578063f852fef914610694575f5ffd5b8063bb4d443614610525578063d3da927f14610538578063dbc857521461054b578063e48a5f7b14610572578063eaeded5f1461061a575f5ffd5b80639f6bc70c116100fa5780639f6bc70c146104bd578063a9cd26c9146104d0578063ab033ea9146104e3578063b35186a8146104f6578063b4ac4536146104fe575f5ffd5b80636a9155161461045e578063710ca35414610471578063715018a6146104855780638da5cb5b1461048d5780639796d9771461049d575f5ffd5b80634800d97f116101c157806359264f001161018657806359264f00146103ff57806362400e4c14610412578063671431c3146104255780636902c67b146104385780636a18ff7a1461044b575f5ffd5b80634800d97f1461036d5780634bd96ece1461039457806352097e4e146103c657806352f44a14146103d95780635338c758146103ec575f5ffd5b806318160ddd1161020757806318160ddd14610309578063289b3c0d1461031f5780632e341ce01461032757806330eb4bdd1461033a5780633fd20fe11461034d575f5ffd5b806215eaaa146102425780630928d1521461026b5780630e9f7e43146102805780630f9f54101461029357806311d66fee146102e9575b5f5ffd5b610255610250366004612ba7565b6106c6565b6040516102629190612bde565b60405180910390f35b61027e610279366004612bf2565b6106dc565b005b61027e61028e366004612c09565b6107b1565b6102556102a1366004612c2f565b6001600160a01b039081165f90815260036020908152604091829020825160808101845281549381019384526001820154606082015292835260020154909216910181905290565b6102fc6102f7366004612d6e565b6107e6565b6040516102629190612d88565b610311610881565b604051908152602001610262565b610255610891565b61027e610335366004612d9f565b6108a0565b610311610348366004612ba7565b61092a565b61036061035b366004612e09565b610b35565b6040516102629190612e9d565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6103b66103a2366004612bf2565b60046020525f908152604090205460ff1681565b6040519015158152602001610262565b61027e6103d4366004612f11565b610c2b565b6103b66103e7366004612c2f565b610c85565b6103116103fa366004612ba7565b610ca5565b61027e61040d366004612c2f565b610d01565b610311610420366004612c2f565b610dba565b610311610433366004612f3c565b610dc6565b61027e610446366004612f66565b610dd3565b61027e610459366004612f11565b61119e565b61025561046c366004612bf2565b6111aa565b6102555f5160206134d85f395f51905f5281565b61027e6111d0565b5f546001600160a01b0316610255565b6104b06104ab366004613013565b6111e3565b60405161026291906130c0565b5f5160206134d85f395f51905f52610255565b6102556104de366004613100565b6111f8565b61027e6104f1366004612c2f565b611269565b6102556112bc565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b610311610533366004612c2f565b6112ca565b6103b6610546366004612ba7565b6112d6565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b6105ed610580366004612c2f565b604080516080810182525f9181018281526060820183905281526020810191909152506001600160a01b039081165f908152600360209081526040918290208251608081018452815493810193845260018201546060820152928352600201549092169181019190915290565b6040805182518051825260209081015181830152909201516001600160a01b031690820152606001610262565b610311610628366004612f3c565b6112f7565b61031161063b366004612f3c565b611304565b61027e61064e366004612c2f565b61139c565b610666610661366004612f3c565b6113d9565b60408051938452911515602084015290820152606001610262565b61031161068f366004612ba7565b611620565b6008546106ae90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610262565b5f6106d36005848461162d565b90505b92915050565b5f6106e5610891565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa15801561072b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f919061313d565b606001516107ad5760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610796575f5ffd5b505af11580156107a8573d5f5f3e3d5ffd5b505050505b5050565b6107b961165a565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6040805180820182525f80825260208201529051633a62f11160e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e98bc44490610843908590600401612d88565b6040805180830381865afa15801561085d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d691906131c1565b5f61088c6005611686565b905090565b6008546001600160a01b031690565b6108a983610c85565b83906108d2576040516330d32d8760e21b81526004016108c99190612bde565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461091457604051630257d8d760e41b81526004016108c99291906131db565b5061092490506005858585611693565b50505050565b5f5f610934610891565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa158015610974573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099891906131f5565b516020015190506109d46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611753565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610a22908590859060040161329b565b6020604051808303815f875af1158015610a3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6291906132b4565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef2490610a91903090859060040161329b565b5f604051808303815f87803b158015610aa8575f5ffd5b505af1158015610aba573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd9150610aec90889088906004016131db565b6020604051808303815f875af1158015610b08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2c91906132cf565b95945050505050565b60605f82516001600160401b03811115610b5157610b51612c4a565b604051908082528060200260200182016040528015610b9557816020015b604080518082019091525f8082526020820152815260200190600190039081610b6f5790505b5090505f5b8351811015610c245760035f858381518110610bb857610bb86132e6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f016040518060400160405290815f8201548152602001600182015481525050828281518110610c1157610c116132e6565b6020908102919091010152600101610b9a565b5092915050565b5f610c35846117ad565b9050610c40816111aa565b33906001600160a01b03168114610c6b576040516305df8ea560e31b81526004016108c99190612bde565b506109245f5160206134d85f395f51905f5285858561183f565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b5f80610cb3600585856118ce565b905080158015610cdb5750836001600160a01b0316610cd06112bc565b6001600160a01b0316145b156106d357610cf960055f5160206134d85f395f51905f52856118ce565b9150506106d6565b610d0961165a565b806001600160a01b038116610d32576040516327bac29760e21b81526004016108c99190612bde565b506001600160a01b0381165f90815260026020526040902060030154819060ff1615610d715760405162cea8b160e11b81526004016108c99190612bde565b506001600160a01b0381165f908152600260205260409020600301805460ff19166001179055610db5610da3426118f5565b6001906001600160a01b038416611929565b505050565b5f6106d6600583611943565b5f6106d360058484611966565b610ddc33610c85565b3390610dfc576040516319aaa75960e11b81526004016108c99190612bde565b505f33610e076112bc565b6001600160a01b03161490508115610e3b573381610e39576040516305df8ea560e31b81526004016108c99190612bde565b505b610e4533886112d6565b1533889091610e6957604051630d75cd7760e11b81526004016108c99291906131db565b50508015610ebc57610e885f5160206134d85f395f51905f52886112d6565b5f5160206134d85f395f51905f5290889015610eb957604051630d75cd7760e11b81526004016108c99291906131db565b50505b5f82610ec85733610ed7565b5f5160206134d85f395f51905f525b6001600160a01b0381165f908152600260205260409020909150610efb9089611992565b81899091610f1e57604051630d75cd7760e11b81526004016108c99291906131db565b5050610f2c88878787611acc565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610f906005828a81611693565b610fbd6005828a7f0000000000000000000000000000000000000000000000000000000000000000611c90565b6110126001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f0000000000000000000000000000000000000000000000000000000000000000611753565b5f61101b610891565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061108c9084907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b6020604051808303815f875af11580156110a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cc91906132b4565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef249061111b9030907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b5f604051808303815f87803b158015611132575f5ffd5b505af1158015611144573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a60405161118b9190612bde565b60405180910390a3505050505050505050565b610db53384848461183f565b5f6106d66111c26111ba846118f5565b600190611d1f565b6001600160e01b0316611d74565b6111d861165a565b6111e15f611da7565b565b60606111f0848385611df6565b949350505050565b6040805160018082528183019092525f918291906020808301908036833701905050905083815f8151811061122f5761122f6132e6565b602002602001018181525050611246858285611df6565b5f81518110611257576112576132e6565b60200260200101519150509392505050565b61127161165a565b6008546001600160a01b03161561129a576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f61088c6111c26001611fe4565b5f6106d660058361201b565b6001600160a01b0382165f9081526002602052604081206106d3908361203f565b5f6106d360058484612060565b6001600160a01b0382165f90815260026020526040812081611325846118f5565b90505f6113328383612085565b9050856001600160a01b0316611347866111aa565b6001600160a01b031603610b2c57739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526113885f5160206134f85f395f51905f5283612085565b611392908261330e565b9695505050505050565b6113a461165a565b6001600160a01b0381166113cd575f604051631e4fbdf760e01b81526004016108c99190612bde565b6113d681611da7565b50565b5f5f5f6113e533610c85565b3390611405576040516319aaa75960e11b81526004016108c99190612bde565b50335f8181526002602052604081209061141f828961203f565b90508015801561143e5750336114336112bc565b6001600160a01b0316145b80156114785750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526114785f5160206134f85f395f51905f528961203f565b156114bb575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206134d85f395f51905f525f5160206134f85f395f51905f5260015b87816114db5760405163417f3a0560e01b81526004016108c99190612bde565b505f6114e96005858b6118ce565b905080888082101561151757604051635087517f60e11b8152600481019290925260248201526044016108c9565b508890505f7f00000000000000000000000000000000000000000000000000000000000000006115478385613321565b109050801561158a5761155a858c6120a0565b8b9061157a576040516304ca9e7360e31b81526004016108c99190612bde565b5082915061158a6005878d612101565b6115976005878d8561210d565b5f6115a0610891565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b81526004016115cd92919061329b565b6020604051808303815f875af11580156115e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160d91906132cf565b929c919b50919950975050505050505050565b5f6106d3600584846118ce565b6001600160a01b039182165f90815260209384526040808220928416825291909352909120600101541690565b5f546001600160a01b031633146111e1573360405163118cdaa760e01b81526004016108c99190612bde565b5f6106d682600201612194565b5f61169f85858561162d565b9050816001600160a01b0316816001600160a01b0316036116c05750610924565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9061172e90849086906131db565b60405180910390a261174c8582846117478989896118ce565b6121ad565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526109249085906122e6565b5f5f6117b7610891565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b81526004016117e491815260200190565b6101a060405180830381865afa158015611800573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118249190613342565b608081015181515191925061183891612349565b9392505050565b5f611849846117ad565b9050611859600586868487612354565b611861610891565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b1580156118b1575f5ffd5b505af11580156118c3573d5f5f3e3d5ffd5b505050505050505050565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b5f63ffffffff821115611925576040516306dfcc6560e41b815260206004820152602481018390526044016108c9565b5090565b5f80611936858585612407565b915091505b935093915050565b6001600160a01b0381165f9081526020839052604081206106d390600101612194565b6001600160a01b0382165f90815260018401602090815260408083208484529091529020549392505050565b5f6001600160a01b0382166119b95760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156119e257505f6106d6565b5f6119ec84611fe4565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b031916176101009190921602179055909150611a5c426118f5565b9050611a9481611a74866001600160a01b031661254b565b6001600160e01b0385165f90815260018901602052604090209190611929565b50611abf905081611ab7611aa9856001613417565b6001600160e01b031661254b565b879190611929565b5060019695505050505050565b6001600160a01b0384165f908152600360209081526040918290208251808401909352805480845260019091015491830191909152158015611b1057506020810151155b815160208301519091611b3f576040516312d6323b60e11b8152600481019290925260248201526044016108c9565b50505f845f01518560200151604051602001611b65929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff1615611bb257604051636ab4baeb60e11b81526004016108c991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b031691611c33918a918a918a9101613436565b6020604051808303818786fa158015611c4e573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c7391906132b4565b6107a85760405163df4ff27b60e01b815260040160405180910390fd5b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290611cca90849061330e565b90915550506001600160a01b038084165f90815260208390526040812060010154611cf99288929116856121ad565b611d06600182018361257e565b50611d169050600286018361257e565b50505050505050565b81545f9081611d30858583856125f8565b90508015611d6a57611d5485611d47600184613321565b5f91825260209091200190565b54600160201b90046001600160e01b0316610b2c565b505f949350505050565b5f6001600160a01b03821115611925576040516306dfcc6560e41b815260a06004820152602481018390526044016108c9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f83516001600160401b03811115611e1257611e12612c4a565b604051908082528060200260200182016040528015611e3b578160200160208202803683370190505b506001600160a01b0386165f818152600260205260408120739064fb41156d300196d5eb95e0b3c1f08ebc39a882529293505f5160206134f85f395f51905f5291611e85876111aa565b6001600160a01b03161490505f611e9b876118f5565b90505f611ea88583612085565b90505f83611eb6575f611ec0565b611ec08584612085565b90505f611ecd828461330e565b90505f5b8b51811015611fd3575f8c8281518110611eed57611eed6132e6565b6020026020010151905082811081849091611f2457604051635d4bf88360e01b8152600481019290925260248201526044016108c9565b505084811015611f7057611f39898288612653565b8a8381518110611f4b57611f4b6132e6565b60200260200101906001600160a01b031690816001600160a01b031681525050611fca565b8615611f8b57611f39611f838683613321565b899088612653565b604051633d6a4a3b60e21b815260206004820152601360248201527229a427aaa622102722ab22a9102420a82822a760691b60448201526064016108c9565b50600101611ed1565b50969b9a5050505050505050505050565b80545f90801561201357611ffd83611d47600184613321565b54600160201b90046001600160e01b0316611838565b5f9392505050565b6001600160a01b0381165f9081526001808401602052604082206106d39101612194565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b0382165f9081526001808501602052604082206111f0910183612682565b5f6120908383611d1f565b6001600160e01b03169392505050565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906120f2575f9150506106d6565b6111f0848260200151856126bc565b610db58383835f611693565b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290612147908490613321565b90915550506001600160a01b038084165f90815260208390526040812060010154612177928892911690856121ad565b61218460018201836128d9565b50611d16905060028601836128d9565b5f61219e82611fe4565b6001600160e01b031692915050565b816001600160a01b0316836001600160a01b031614806121cb575080155b610924576001600160a01b03831615612258576001600160a01b0383165f90815260018086016020526040822082916122059101846128d9565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161224d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610924576001600160a01b0382165f908152600180860160205260408220829161228e91018461257e565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516122d6929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af180612305576040513d5f823e3d81fd5b50505f513d9150811561231c578060011415612329565b6001600160a01b0384163b155b156109245783604051635274afe760e01b81526004016108c99190612bde565b5f6106d3828461330e565b5f612360868685612060565b90505f61236e878787611966565b905061237a838261330e565b8210158683612389868561330e565b9091926123c25760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016108c9565b5050506001600160a01b0386165f9081526001880160209081526040808320888452909152812080548592906123f990849061330e565b909155505050505050505050565b82545f90819080156124f3575f61242387611d47600185613321565b805490915063ffffffff80821691600160201b90046001600160e01b031690881682111561246457604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff160361249757825463ffffffff16600160201b6001600160e01b038916021783556124e5565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061193b92505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b02919093161792019190915590508161193b565b5f6001600160e01b03821115611925576040516306dfcc6560e41b815260e06004820152602481018390526044016108c9565b5f5f5f61258a85611fe4565b9050835f036125a6576001600160e01b031691508190506125f1565b5f6125b08561254b565b90506125d06125be426118f5565b6125c88385613417565b889190611929565b508290506125de8282613417565b6001600160e01b03918216955016925050505b9250929050565b5f5b8183101561264b575f61260d8484612986565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561263757809250612645565b61264281600161330e565b93505b506125fa565b509392505050565b5f8281526001840160205260408120819061266e90846129a0565b9050610b2c816001600160e01b0316611d74565b5f61268c82421190565b6126a9576040516334dcb7d760e21b815260040160405180910390fd5b6120906126b5836118f5565b84906129a0565b5f806126c785611fe4565b9050806001600160e01b0316846001600160e01b03161061270e57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016108c9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b039094169390930292909217905561277d600183613485565b90505f612789426118f5565b9050856001600160e01b0316826001600160e01b031614612886576001600160e01b0382165f90815260018801602052604081206127ca906111c290611fe4565b905060405180604001604052806001151581526020016127f2896001600160e01b031661254b565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b0319909416939093179290921790556128829083906128629061254b565b6001600160e01b038a165f90815260018c01602052604090209190611929565b5050505b6001600160e01b0382165f90815260018801602052604081206128aa918390611929565b50506128ca816128c2846001600160e01b031661254b565b899190611929565b50600198975050505050505050565b5f5f5f6128e585611fe4565b9050835f03612901576001600160e01b031691508190506125f1565b5f61290b8561254b565b90503382826001600160e01b03808216908316101561295f5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016108c9565b50505061297861296e426118f5565b6125c88385613485565b508290506125de8282613485565b5f61299460028484186134b8565b6106d39084841661330e565b81545f90818160058111156129fa575f6129b984612a41565b6129c39085613321565b5f8881526020902090915081015463ffffffff90811690871610156129ea578091506129f8565b6129f581600161330e565b92505b505b5f612a07878785856125f8565b90508015612a3457612a1e87611d47600184613321565b54600160201b90046001600160e01b0316612a36565b5f5b979650505050505050565b5f60018211612a4e575090565b816001600160801b8210612a675760809190911c9060401b5b600160401b8210612a7d5760409190911c9060201b5b600160201b8210612a935760209190911c9060101b5b620100008210612aa85760109190911c9060081b5b6101008210612abc5760089190911c9060041b5b60108210612acf5760049190911c9060021b5b60048210612adb5760011b5b600302600190811c90818581612af357612af36134a4565b048201901c90506001818581612b0b57612b0b6134a4565b048201901c90506001818581612b2357612b236134a4565b048201901c90506001818581612b3b57612b3b6134a4565b048201901c90506001818581612b5357612b536134a4565b048201901c90506001818581612b6b57612b6b6134a4565b048201901c9050612b8a818581612b8457612b846134a4565b04821190565b90039392505050565b6001600160a01b03811681146113d6575f5ffd5b5f5f60408385031215612bb8575f5ffd5b8235612bc381612b93565b91506020830135612bd381612b93565b809150509250929050565b6001600160a01b0391909116815260200190565b5f60208284031215612c02575f5ffd5b5035919050565b5f60208284031215612c19575f5ffd5b81356001600160401b03811681146106d3575f5ffd5b5f60208284031215612c3f575f5ffd5b81356106d381612b93565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612c8057612c80612c4a565b60405290565b604051608081016001600160401b0381118282101715612c8057612c80612c4a565b60405161010081016001600160401b0381118282101715612c8057612c80612c4a565b60405160c081016001600160401b0381118282101715612c8057612c80612c4a565b60405160e081016001600160401b0381118282101715612c8057612c80612c4a565b604051601f8201601f191681016001600160401b0381118282101715612d3757612d37612c4a565b604052919050565b5f60408284031215612d4f575f5ffd5b612d57612c5e565b823581526020928301359281019290925250919050565b5f60408284031215612d7e575f5ffd5b6106d38383612d3f565b8151815260208083015190820152604081016106d6565b5f5f5f60608486031215612db1575f5ffd5b8335612dbc81612b93565b92506020840135612dcc81612b93565b91506040840135612ddc81612b93565b809150509250925092565b5f6001600160401b03821115612dff57612dff612c4a565b5060051b60200190565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b8201601f81018413612e3e575f5ffd5b8035612e51612e4c82612de7565b612d0f565b8082825260208201915060208360051b850101925086831115612e72575f5ffd5b6020840193505b82841015611392578335612e8c81612b93565b825260209384019390910190612e79565b602080825282518282018190525f918401906040840190835b81811015612ee957612ed383855180518252602090810151910152565b6020939093019260409290920191600101612eb6565b509095945050505050565b80151581146113d6575f5ffd5b8035612f0c81612ef4565b919050565b5f5f5f60608486031215612f23575f5ffd5b83359250602084013591506040840135612ddc81612ef4565b5f5f60408385031215612f4d575f5ffd5b8235612f5881612b93565b946020939093013593505050565b5f5f5f5f5f5f868803610160811215612f7d575f5ffd5b8735612f8881612b93565b96506020880135612f9881612b93565b9550612fa78960408a01612d3f565b94506080607f1982011215612fba575f5ffd5b50612fc3612c86565b6080880135815260a0880135602082015260c0880135604082015260e088013560608201529250612ff8886101008901612d3f565b91506130076101408801612f01565b90509295509295509295565b5f5f5f60608486031215613025575f5ffd5b833561303081612b93565b92506020840135915060408401356001600160401b03811115613051575f5ffd5b8401601f81018613613061575f5ffd5b803561306f612e4c82612de7565b8082825260208201915060208360051b850101925088831115613090575f5ffd5b6020840193505b828410156130b2578335825260209384019390910190613097565b809450505050509250925092565b602080825282518282018190525f918401906040840190835b81811015612ee95783516001600160a01b03168352602093840193909201916001016130d9565b5f5f5f60608486031215613112575f5ffd5b833561311d81612b93565b95602085013595506040909401359392505050565b8051612f0c81612b93565b5f608082840312801561314e575f5ffd5b50613157612c86565b8251815260208084015190820152604083015161317381612b93565b6040820152606083015161318681612ef4565b60608201529392505050565b5f604082840312156131a2575f5ffd5b6131aa612c5e565b825181526020928301519281019290925250919050565b5f604082840312156131d1575f5ffd5b6106d38383613192565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015613208575f5ffd5b50613211612ca8565b604082121561321e575f5ffd5b613226612c5e565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f602082840312156132c4575f5ffd5b81516106d381612ef4565b5f602082840312156132df575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106d6576106d66132fa565b818103818111156106d6576106d66132fa565b805160098110612f0c575f5ffd5b5f8183036101a081128015613355575f5ffd5b5061335e612ccb565b60e082121561336b575f5ffd5b613373612ced565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c0808601519082015280825291506133c460e08501613334565b60208201526133d66101008501613132565b60408201526133e86101208501613132565b606082015261014084015160808201819052915061340a856101608601613192565b60a0820152949350505050565b6001600160e01b0381811683821601908111156106d6576106d66132fa565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526111f060c083018480518252602090810151910152565b6001600160e01b0382811682821603908111156106d6576106d66132fa565b634e487b7160e01b5f52601260045260245ffd5b5f826134d257634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a845cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c517a26469706673582212201c1bc70b2c18d993948a0f411b54e0c32944012c3e0f9eaa345a786cad82096864736f6c634300081e00336080604052348015600e575f5ffd5b50610a408061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80633f78271d14610038578063e98bc44414610060575b5f5ffd5b61004b61004636600461088b565b61008e565b60405190151581526020015b60405180910390f35b61007361006e36600461092f565b6100a2565b60408051825181526020928301519281019290925201610057565b5f61009a8484846100c4565b949350505050565b604080518082019091525f80825260208201526100be826101e4565b92915050565b5f6100ce84610256565b156100ec5760405163204cab4d60e21b815260040160405180910390fd5b6100f58361026b565b156101135760405163204cab4d60e21b815260040160405180910390fd5b61011c82610256565b1561013a5760405163204cab4d60e21b815260040160405180910390fd5b5f610144856101e4565b90505f61015286868661029c565b9050805f0361017457604051631262b41360e01b815260040160405180910390fd5b5f61018885610183898561033c565b6103a3565b90505f6101c3846101836101bd6040805180820182525f80825260209182015281518083019092526001825260029082015290565b8661033c565b90506101d8826101d161040e565b838a6104db565b98975050505050505050565b604080518082019091525f80825260208201525f825f0151836020015160405160200161021b929190918252602082015260400190565b604051602081830303815290604052905061024f75415a5445435f424c535f504f505f424e3235345f563160501b82610598565b9392505050565b80515f901580156100be575050602001511590565b80515f9015801561027e57506020820151155b801561028c57506040820151155b80156100be575050606001511590565b82516020808501518451858301516040808801516060808a015189518a8901518551808b019b909b528a86019890985291890195909552608088019390935260a087015260c086019290925260e0850152610100808501929092528051808503909201825261012090930190925281519101205f9061009a907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190610949565b604080518082019091525f80825260208201526103576107b9565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa90508061039b57604051635d90883360e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526103be6107d7565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508061039b57604051635d3761b560e11b815260040160405180910390fd5b61043560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec815250905090565b5f6104e46107f5565b85518152602080870151818301528581015160408084019190915286516060808501919091528088015160808501528188015160a0850152865160c08501528683015160e085015291850151610100840152845161012084015290840151610140830152830151610160820152610559610814565b5f6020826101808560086107d05a03fa9050806105895760405163a158f26960e01b815260040160405180910390fd5b50516001149695505050505050565b604080518082019091525f80825260208201525f805b5f8585836040516020016105c493929190610968565b60408051601f1981840301815291905280516020909101209050816105e8816109bf565b9250505f5160206109eb5f395f51905f52811061060557506105ae565b5f5f5160206109eb5f395f51905f5282830990505f5160206109eb5f395f51905f5282820990505f5160206109eb5f395f51905f5260038208905061064981610716565b9450905083156106f157805f61066c825f5160206109eb5f395f51905f526109d7565b90508082111561067857905b5f89895f1960405160200161068f93929190610968565b604051602081830303815290604052805190602001205f1c9050806001165f036106cf5760405180604001604052808681526020018481525097506106e7565b60405180604001604052808681526020018381525097505b50505050506106f8565b50506105ae565b8161039b57604051633d7f3d1d60e21b815260040160405180910390fd5b5f5f5f60405160208152602080820152602060408201528460608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206109eb5f395f51905f5260a082015260208160c08360056107d05a03fa9051935090505f5160206109eb5f395f51905f5283800984149150806107b357604051634ccc085960e11b815260040160405180910390fd5b50915091565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5f60408284031215610842575f5ffd5b6040805190810167ffffffffffffffff8111828210171561087157634e487b7160e01b5f52604160045260245ffd5b604052823581526020928301359281019290925250919050565b5f5f5f83850361010081121561089f575f5ffd5b6108a98686610832565b93506080603f19820112156108bc575f5ffd5b506040516080810167ffffffffffffffff811182821017156108ec57634e487b7160e01b5f52604160045260245ffd5b6040908152858101358252606080870135602084015260808701359183019190915260a08601359082015291506109268560c08601610832565b90509250925092565b5f6040828403121561093f575f5ffd5b61024f8383610832565b5f8261096357634e487b7160e01b5f52601260045260245ffd5b500690565b838152606060208201525f83518060608401528060208601608085015e5f608082850101526080601f19601f830116840101915050826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016109d0576109d06109ab565b5060010190565b818103818111156100be576100be6109ab56fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220de9df0f3403cc6ba88f84cc9c26bae092407e794597e756c9f14d996d3fccc6364736f6c634300081e0033","sourceMap":"31792:8139:130:-:0;;;9872:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9817:76:130;;;11696:49;;;-1:-1:-1;;;;;;;;11696:49:130;-1:-1:-1;;;11696:49:130;;;32052:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32166:7;32175:6;32183:20;32205:18;32166:7;-1:-1:-1;;;;;1273:26:35;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:35;;1350:1;1322:31;;;929:51:184;902:18;;1322:31:35;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;12815:14:130;;::::1;;::::0;12835:43:::1;::::0;12884:39:::1;::::0;-1:-1:-1;;12929:33:130;::::1;::::0;-1:-1:-1;;12929:9:130::1;-1:-1:-1::0;12929:33:130;-1:-1:-1;12929:40:130;:47;;-1:-1:-1;;12929:47:130::1;12972:4;12929:47;::::0;;31792:8139;;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;31792:8139:130:-;;;;;;;;:::o;14:131:184:-;-1:-1:-1;;;;;89:31:184;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:628::-;263:6;271;279;287;340:3;328:9;319:7;315:23;311:33;308:53;;;357:1;354;347:12;308:53;389:9;383:16;408:31;433:5;408:31;:::i;:::-;508:2;493:18;;487:25;458:5;;-1:-1:-1;521:33:184;487:25;521:33;:::i;:::-;646:2;631:18;;625:25;742:2;727:18;;;721:25;150:628;;573:7;;-1:-1:-1;150:628:184;-1:-1:-1;;;150:628:184:o;783:203::-;31792:8139:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061023e575f3560e01c80636a91551611610135578063bb4d4436116100b4578063ec6e69db11610079578063ec6e69db1461062d578063f2fde38b14610640578063f3fef3a314610653578063f7888aec14610681578063f852fef914610694575f5ffd5b8063bb4d443614610525578063d3da927f14610538578063dbc857521461054b578063e48a5f7b14610572578063eaeded5f1461061a575f5ffd5b80639f6bc70c116100fa5780639f6bc70c146104bd578063a9cd26c9146104d0578063ab033ea9146104e3578063b35186a8146104f6578063b4ac4536146104fe575f5ffd5b80636a9155161461045e578063710ca35414610471578063715018a6146104855780638da5cb5b1461048d5780639796d9771461049d575f5ffd5b80634800d97f116101c157806359264f001161018657806359264f00146103ff57806362400e4c14610412578063671431c3146104255780636902c67b146104385780636a18ff7a1461044b575f5ffd5b80634800d97f1461036d5780634bd96ece1461039457806352097e4e146103c657806352f44a14146103d95780635338c758146103ec575f5ffd5b806318160ddd1161020757806318160ddd14610309578063289b3c0d1461031f5780632e341ce01461032757806330eb4bdd1461033a5780633fd20fe11461034d575f5ffd5b806215eaaa146102425780630928d1521461026b5780630e9f7e43146102805780630f9f54101461029357806311d66fee146102e9575b5f5ffd5b610255610250366004612ba7565b6106c6565b6040516102629190612bde565b60405180910390f35b61027e610279366004612bf2565b6106dc565b005b61027e61028e366004612c09565b6107b1565b6102556102a1366004612c2f565b6001600160a01b039081165f90815260036020908152604091829020825160808101845281549381019384526001820154606082015292835260020154909216910181905290565b6102fc6102f7366004612d6e565b6107e6565b6040516102629190612d88565b610311610881565b604051908152602001610262565b610255610891565b61027e610335366004612d9f565b6108a0565b610311610348366004612ba7565b61092a565b61036061035b366004612e09565b610b35565b6040516102629190612e9d565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6103b66103a2366004612bf2565b60046020525f908152604090205460ff1681565b6040519015158152602001610262565b61027e6103d4366004612f11565b610c2b565b6103b66103e7366004612c2f565b610c85565b6103116103fa366004612ba7565b610ca5565b61027e61040d366004612c2f565b610d01565b610311610420366004612c2f565b610dba565b610311610433366004612f3c565b610dc6565b61027e610446366004612f66565b610dd3565b61027e610459366004612f11565b61119e565b61025561046c366004612bf2565b6111aa565b6102555f5160206134d85f395f51905f5281565b61027e6111d0565b5f546001600160a01b0316610255565b6104b06104ab366004613013565b6111e3565b60405161026291906130c0565b5f5160206134d85f395f51905f52610255565b6102556104de366004613100565b6111f8565b61027e6104f1366004612c2f565b611269565b6102556112bc565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b610311610533366004612c2f565b6112ca565b6103b6610546366004612ba7565b6112d6565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b6105ed610580366004612c2f565b604080516080810182525f9181018281526060820183905281526020810191909152506001600160a01b039081165f908152600360209081526040918290208251608081018452815493810193845260018201546060820152928352600201549092169181019190915290565b6040805182518051825260209081015181830152909201516001600160a01b031690820152606001610262565b610311610628366004612f3c565b6112f7565b61031161063b366004612f3c565b611304565b61027e61064e366004612c2f565b61139c565b610666610661366004612f3c565b6113d9565b60408051938452911515602084015290820152606001610262565b61031161068f366004612ba7565b611620565b6008546106ae90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610262565b5f6106d36005848461162d565b90505b92915050565b5f6106e5610891565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa15801561072b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f919061313d565b606001516107ad5760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610796575f5ffd5b505af11580156107a8573d5f5f3e3d5ffd5b505050505b5050565b6107b961165a565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6040805180820182525f80825260208201529051633a62f11160e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e98bc44490610843908590600401612d88565b6040805180830381865afa15801561085d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d691906131c1565b5f61088c6005611686565b905090565b6008546001600160a01b031690565b6108a983610c85565b83906108d2576040516330d32d8760e21b81526004016108c99190612bde565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461091457604051630257d8d760e41b81526004016108c99291906131db565b5061092490506005858585611693565b50505050565b5f5f610934610891565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa158015610974573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099891906131f5565b516020015190506109d46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611753565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610a22908590859060040161329b565b6020604051808303815f875af1158015610a3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6291906132b4565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef2490610a91903090859060040161329b565b5f604051808303815f87803b158015610aa8575f5ffd5b505af1158015610aba573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd9150610aec90889088906004016131db565b6020604051808303815f875af1158015610b08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2c91906132cf565b95945050505050565b60605f82516001600160401b03811115610b5157610b51612c4a565b604051908082528060200260200182016040528015610b9557816020015b604080518082019091525f8082526020820152815260200190600190039081610b6f5790505b5090505f5b8351811015610c245760035f858381518110610bb857610bb86132e6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f016040518060400160405290815f8201548152602001600182015481525050828281518110610c1157610c116132e6565b6020908102919091010152600101610b9a565b5092915050565b5f610c35846117ad565b9050610c40816111aa565b33906001600160a01b03168114610c6b576040516305df8ea560e31b81526004016108c99190612bde565b506109245f5160206134d85f395f51905f5285858561183f565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b5f80610cb3600585856118ce565b905080158015610cdb5750836001600160a01b0316610cd06112bc565b6001600160a01b0316145b156106d357610cf960055f5160206134d85f395f51905f52856118ce565b9150506106d6565b610d0961165a565b806001600160a01b038116610d32576040516327bac29760e21b81526004016108c99190612bde565b506001600160a01b0381165f90815260026020526040902060030154819060ff1615610d715760405162cea8b160e11b81526004016108c99190612bde565b506001600160a01b0381165f908152600260205260409020600301805460ff19166001179055610db5610da3426118f5565b6001906001600160a01b038416611929565b505050565b5f6106d6600583611943565b5f6106d360058484611966565b610ddc33610c85565b3390610dfc576040516319aaa75960e11b81526004016108c99190612bde565b505f33610e076112bc565b6001600160a01b03161490508115610e3b573381610e39576040516305df8ea560e31b81526004016108c99190612bde565b505b610e4533886112d6565b1533889091610e6957604051630d75cd7760e11b81526004016108c99291906131db565b50508015610ebc57610e885f5160206134d85f395f51905f52886112d6565b5f5160206134d85f395f51905f5290889015610eb957604051630d75cd7760e11b81526004016108c99291906131db565b50505b5f82610ec85733610ed7565b5f5160206134d85f395f51905f525b6001600160a01b0381165f908152600260205260409020909150610efb9089611992565b81899091610f1e57604051630d75cd7760e11b81526004016108c99291906131db565b5050610f2c88878787611acc565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610f906005828a81611693565b610fbd6005828a7f0000000000000000000000000000000000000000000000000000000000000000611c90565b6110126001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f0000000000000000000000000000000000000000000000000000000000000000611753565b5f61101b610891565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061108c9084907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b6020604051808303815f875af11580156110a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cc91906132b4565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef249061111b9030907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b5f604051808303815f87803b158015611132575f5ffd5b505af1158015611144573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a60405161118b9190612bde565b60405180910390a3505050505050505050565b610db53384848461183f565b5f6106d66111c26111ba846118f5565b600190611d1f565b6001600160e01b0316611d74565b6111d861165a565b6111e15f611da7565b565b60606111f0848385611df6565b949350505050565b6040805160018082528183019092525f918291906020808301908036833701905050905083815f8151811061122f5761122f6132e6565b602002602001018181525050611246858285611df6565b5f81518110611257576112576132e6565b60200260200101519150509392505050565b61127161165a565b6008546001600160a01b03161561129a576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f61088c6111c26001611fe4565b5f6106d660058361201b565b6001600160a01b0382165f9081526002602052604081206106d3908361203f565b5f6106d360058484612060565b6001600160a01b0382165f90815260026020526040812081611325846118f5565b90505f6113328383612085565b9050856001600160a01b0316611347866111aa565b6001600160a01b031603610b2c57739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526113885f5160206134f85f395f51905f5283612085565b611392908261330e565b9695505050505050565b6113a461165a565b6001600160a01b0381166113cd575f604051631e4fbdf760e01b81526004016108c99190612bde565b6113d681611da7565b50565b5f5f5f6113e533610c85565b3390611405576040516319aaa75960e11b81526004016108c99190612bde565b50335f8181526002602052604081209061141f828961203f565b90508015801561143e5750336114336112bc565b6001600160a01b0316145b80156114785750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526114785f5160206134f85f395f51905f528961203f565b156114bb575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206134d85f395f51905f525f5160206134f85f395f51905f5260015b87816114db5760405163417f3a0560e01b81526004016108c99190612bde565b505f6114e96005858b6118ce565b905080888082101561151757604051635087517f60e11b8152600481019290925260248201526044016108c9565b508890505f7f00000000000000000000000000000000000000000000000000000000000000006115478385613321565b109050801561158a5761155a858c6120a0565b8b9061157a576040516304ca9e7360e31b81526004016108c99190612bde565b5082915061158a6005878d612101565b6115976005878d8561210d565b5f6115a0610891565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b81526004016115cd92919061329b565b6020604051808303815f875af11580156115e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160d91906132cf565b929c919b50919950975050505050505050565b5f6106d3600584846118ce565b6001600160a01b039182165f90815260209384526040808220928416825291909352909120600101541690565b5f546001600160a01b031633146111e1573360405163118cdaa760e01b81526004016108c99190612bde565b5f6106d682600201612194565b5f61169f85858561162d565b9050816001600160a01b0316816001600160a01b0316036116c05750610924565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9061172e90849086906131db565b60405180910390a261174c8582846117478989896118ce565b6121ad565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526109249085906122e6565b5f5f6117b7610891565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b81526004016117e491815260200190565b6101a060405180830381865afa158015611800573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118249190613342565b608081015181515191925061183891612349565b9392505050565b5f611849846117ad565b9050611859600586868487612354565b611861610891565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b1580156118b1575f5ffd5b505af11580156118c3573d5f5f3e3d5ffd5b505050505050505050565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b5f63ffffffff821115611925576040516306dfcc6560e41b815260206004820152602481018390526044016108c9565b5090565b5f80611936858585612407565b915091505b935093915050565b6001600160a01b0381165f9081526020839052604081206106d390600101612194565b6001600160a01b0382165f90815260018401602090815260408083208484529091529020549392505050565b5f6001600160a01b0382166119b95760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156119e257505f6106d6565b5f6119ec84611fe4565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b031916176101009190921602179055909150611a5c426118f5565b9050611a9481611a74866001600160a01b031661254b565b6001600160e01b0385165f90815260018901602052604090209190611929565b50611abf905081611ab7611aa9856001613417565b6001600160e01b031661254b565b879190611929565b5060019695505050505050565b6001600160a01b0384165f908152600360209081526040918290208251808401909352805480845260019091015491830191909152158015611b1057506020810151155b815160208301519091611b3f576040516312d6323b60e11b8152600481019290925260248201526044016108c9565b50505f845f01518560200151604051602001611b65929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff1615611bb257604051636ab4baeb60e11b81526004016108c991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b031691611c33918a918a918a9101613436565b6020604051808303818786fa158015611c4e573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c7391906132b4565b6107a85760405163df4ff27b60e01b815260040160405180910390fd5b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290611cca90849061330e565b90915550506001600160a01b038084165f90815260208390526040812060010154611cf99288929116856121ad565b611d06600182018361257e565b50611d169050600286018361257e565b50505050505050565b81545f9081611d30858583856125f8565b90508015611d6a57611d5485611d47600184613321565b5f91825260209091200190565b54600160201b90046001600160e01b0316610b2c565b505f949350505050565b5f6001600160a01b03821115611925576040516306dfcc6560e41b815260a06004820152602481018390526044016108c9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f83516001600160401b03811115611e1257611e12612c4a565b604051908082528060200260200182016040528015611e3b578160200160208202803683370190505b506001600160a01b0386165f818152600260205260408120739064fb41156d300196d5eb95e0b3c1f08ebc39a882529293505f5160206134f85f395f51905f5291611e85876111aa565b6001600160a01b03161490505f611e9b876118f5565b90505f611ea88583612085565b90505f83611eb6575f611ec0565b611ec08584612085565b90505f611ecd828461330e565b90505f5b8b51811015611fd3575f8c8281518110611eed57611eed6132e6565b6020026020010151905082811081849091611f2457604051635d4bf88360e01b8152600481019290925260248201526044016108c9565b505084811015611f7057611f39898288612653565b8a8381518110611f4b57611f4b6132e6565b60200260200101906001600160a01b031690816001600160a01b031681525050611fca565b8615611f8b57611f39611f838683613321565b899088612653565b604051633d6a4a3b60e21b815260206004820152601360248201527229a427aaa622102722ab22a9102420a82822a760691b60448201526064016108c9565b50600101611ed1565b50969b9a5050505050505050505050565b80545f90801561201357611ffd83611d47600184613321565b54600160201b90046001600160e01b0316611838565b5f9392505050565b6001600160a01b0381165f9081526001808401602052604082206106d39101612194565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b0382165f9081526001808501602052604082206111f0910183612682565b5f6120908383611d1f565b6001600160e01b03169392505050565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906120f2575f9150506106d6565b6111f0848260200151856126bc565b610db58383835f611693565b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290612147908490613321565b90915550506001600160a01b038084165f90815260208390526040812060010154612177928892911690856121ad565b61218460018201836128d9565b50611d16905060028601836128d9565b5f61219e82611fe4565b6001600160e01b031692915050565b816001600160a01b0316836001600160a01b031614806121cb575080155b610924576001600160a01b03831615612258576001600160a01b0383165f90815260018086016020526040822082916122059101846128d9565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161224d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610924576001600160a01b0382165f908152600180860160205260408220829161228e91018461257e565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516122d6929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af180612305576040513d5f823e3d81fd5b50505f513d9150811561231c578060011415612329565b6001600160a01b0384163b155b156109245783604051635274afe760e01b81526004016108c99190612bde565b5f6106d3828461330e565b5f612360868685612060565b90505f61236e878787611966565b905061237a838261330e565b8210158683612389868561330e565b9091926123c25760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016108c9565b5050506001600160a01b0386165f9081526001880160209081526040808320888452909152812080548592906123f990849061330e565b909155505050505050505050565b82545f90819080156124f3575f61242387611d47600185613321565b805490915063ffffffff80821691600160201b90046001600160e01b031690881682111561246457604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff160361249757825463ffffffff16600160201b6001600160e01b038916021783556124e5565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061193b92505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b02919093161792019190915590508161193b565b5f6001600160e01b03821115611925576040516306dfcc6560e41b815260e06004820152602481018390526044016108c9565b5f5f5f61258a85611fe4565b9050835f036125a6576001600160e01b031691508190506125f1565b5f6125b08561254b565b90506125d06125be426118f5565b6125c88385613417565b889190611929565b508290506125de8282613417565b6001600160e01b03918216955016925050505b9250929050565b5f5b8183101561264b575f61260d8484612986565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561263757809250612645565b61264281600161330e565b93505b506125fa565b509392505050565b5f8281526001840160205260408120819061266e90846129a0565b9050610b2c816001600160e01b0316611d74565b5f61268c82421190565b6126a9576040516334dcb7d760e21b815260040160405180910390fd5b6120906126b5836118f5565b84906129a0565b5f806126c785611fe4565b9050806001600160e01b0316846001600160e01b03161061270e57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016108c9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b039094169390930292909217905561277d600183613485565b90505f612789426118f5565b9050856001600160e01b0316826001600160e01b031614612886576001600160e01b0382165f90815260018801602052604081206127ca906111c290611fe4565b905060405180604001604052806001151581526020016127f2896001600160e01b031661254b565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b0319909416939093179290921790556128829083906128629061254b565b6001600160e01b038a165f90815260018c01602052604090209190611929565b5050505b6001600160e01b0382165f90815260018801602052604081206128aa918390611929565b50506128ca816128c2846001600160e01b031661254b565b899190611929565b50600198975050505050505050565b5f5f5f6128e585611fe4565b9050835f03612901576001600160e01b031691508190506125f1565b5f61290b8561254b565b90503382826001600160e01b03808216908316101561295f5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016108c9565b50505061297861296e426118f5565b6125c88385613485565b508290506125de8282613485565b5f61299460028484186134b8565b6106d39084841661330e565b81545f90818160058111156129fa575f6129b984612a41565b6129c39085613321565b5f8881526020902090915081015463ffffffff90811690871610156129ea578091506129f8565b6129f581600161330e565b92505b505b5f612a07878785856125f8565b90508015612a3457612a1e87611d47600184613321565b54600160201b90046001600160e01b0316612a36565b5f5b979650505050505050565b5f60018211612a4e575090565b816001600160801b8210612a675760809190911c9060401b5b600160401b8210612a7d5760409190911c9060201b5b600160201b8210612a935760209190911c9060101b5b620100008210612aa85760109190911c9060081b5b6101008210612abc5760089190911c9060041b5b60108210612acf5760049190911c9060021b5b60048210612adb5760011b5b600302600190811c90818581612af357612af36134a4565b048201901c90506001818581612b0b57612b0b6134a4565b048201901c90506001818581612b2357612b236134a4565b048201901c90506001818581612b3b57612b3b6134a4565b048201901c90506001818581612b5357612b536134a4565b048201901c90506001818581612b6b57612b6b6134a4565b048201901c9050612b8a818581612b8457612b846134a4565b04821190565b90039392505050565b6001600160a01b03811681146113d6575f5ffd5b5f5f60408385031215612bb8575f5ffd5b8235612bc381612b93565b91506020830135612bd381612b93565b809150509250929050565b6001600160a01b0391909116815260200190565b5f60208284031215612c02575f5ffd5b5035919050565b5f60208284031215612c19575f5ffd5b81356001600160401b03811681146106d3575f5ffd5b5f60208284031215612c3f575f5ffd5b81356106d381612b93565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612c8057612c80612c4a565b60405290565b604051608081016001600160401b0381118282101715612c8057612c80612c4a565b60405161010081016001600160401b0381118282101715612c8057612c80612c4a565b60405160c081016001600160401b0381118282101715612c8057612c80612c4a565b60405160e081016001600160401b0381118282101715612c8057612c80612c4a565b604051601f8201601f191681016001600160401b0381118282101715612d3757612d37612c4a565b604052919050565b5f60408284031215612d4f575f5ffd5b612d57612c5e565b823581526020928301359281019290925250919050565b5f60408284031215612d7e575f5ffd5b6106d38383612d3f565b8151815260208083015190820152604081016106d6565b5f5f5f60608486031215612db1575f5ffd5b8335612dbc81612b93565b92506020840135612dcc81612b93565b91506040840135612ddc81612b93565b809150509250925092565b5f6001600160401b03821115612dff57612dff612c4a565b5060051b60200190565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b8201601f81018413612e3e575f5ffd5b8035612e51612e4c82612de7565b612d0f565b8082825260208201915060208360051b850101925086831115612e72575f5ffd5b6020840193505b82841015611392578335612e8c81612b93565b825260209384019390910190612e79565b602080825282518282018190525f918401906040840190835b81811015612ee957612ed383855180518252602090810151910152565b6020939093019260409290920191600101612eb6565b509095945050505050565b80151581146113d6575f5ffd5b8035612f0c81612ef4565b919050565b5f5f5f60608486031215612f23575f5ffd5b83359250602084013591506040840135612ddc81612ef4565b5f5f60408385031215612f4d575f5ffd5b8235612f5881612b93565b946020939093013593505050565b5f5f5f5f5f5f868803610160811215612f7d575f5ffd5b8735612f8881612b93565b96506020880135612f9881612b93565b9550612fa78960408a01612d3f565b94506080607f1982011215612fba575f5ffd5b50612fc3612c86565b6080880135815260a0880135602082015260c0880135604082015260e088013560608201529250612ff8886101008901612d3f565b91506130076101408801612f01565b90509295509295509295565b5f5f5f60608486031215613025575f5ffd5b833561303081612b93565b92506020840135915060408401356001600160401b03811115613051575f5ffd5b8401601f81018613613061575f5ffd5b803561306f612e4c82612de7565b8082825260208201915060208360051b850101925088831115613090575f5ffd5b6020840193505b828410156130b2578335825260209384019390910190613097565b809450505050509250925092565b602080825282518282018190525f918401906040840190835b81811015612ee95783516001600160a01b03168352602093840193909201916001016130d9565b5f5f5f60608486031215613112575f5ffd5b833561311d81612b93565b95602085013595506040909401359392505050565b8051612f0c81612b93565b5f608082840312801561314e575f5ffd5b50613157612c86565b8251815260208084015190820152604083015161317381612b93565b6040820152606083015161318681612ef4565b60608201529392505050565b5f604082840312156131a2575f5ffd5b6131aa612c5e565b825181526020928301519281019290925250919050565b5f604082840312156131d1575f5ffd5b6106d38383613192565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015613208575f5ffd5b50613211612ca8565b604082121561321e575f5ffd5b613226612c5e565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f602082840312156132c4575f5ffd5b81516106d381612ef4565b5f602082840312156132df575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106d6576106d66132fa565b818103818111156106d6576106d66132fa565b805160098110612f0c575f5ffd5b5f8183036101a081128015613355575f5ffd5b5061335e612ccb565b60e082121561336b575f5ffd5b613373612ced565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c0808601519082015280825291506133c460e08501613334565b60208201526133d66101008501613132565b60408201526133e86101208501613132565b606082015261014084015160808201819052915061340a856101608601613192565b60a0820152949350505050565b6001600160e01b0381811683821601908111156106d6576106d66132fa565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526111f060c083018480518252602090810151910152565b6001600160e01b0382811682821603908111156106d6576106d66132fa565b634e487b7160e01b5f52601260045260245ffd5b5f826134d257634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a845cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c517a26469706673582212201c1bc70b2c18d993948a0f411b54e0c32944012c3e0f9eaa345a786cad82096864736f6c634300081e0033","sourceMap":"31792:8139:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34473:170;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23479:222;;;;;;:::i;:::-;;:::i;:::-;;13193:176;;;;;;:::i;:::-;;:::i;32953:192::-;;;;;;:::i;:::-;-1:-1:-1;;;;;33090:19:130;;;33033:18;33090:19;;;:8;:19;;;;;;;;;33059:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32953:192;32634:175;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;34359:110::-;;;:::i;:::-;;;4409:25:184;;;4397:2;4382:18;34359:110:130;4263:177:184;29180:105:130;;;:::i;26171:404::-;;;;;;:::i;:::-;;:::i;24616:410::-;;;;;;:::i;:::-;;:::i;35325:337::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10349:29::-;;;;;10815:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8035:14:184;;8028:22;8010:41;;7998:2;7983:18;10815:63:130;7870:187:184;27583:316:130;;;;;;:::i;:::-;;:::i;27903:138::-;;;;;;:::i;:::-;;:::i;33872:344::-;;;;;;:::i;:::-;;:::i;14182:356::-;;;;;;:::i;:::-;;:::i;34220:135::-;;;;;;:::i;:::-;;:::i;35988:176::-;;;;;;:::i;:::-;;:::i;16518:2533::-;;;;;;:::i;:::-;;:::i;26987:155::-;;;;;;:::i;:::-;;:::i;28979:197::-;;;;;;:::i;:::-;;:::i;9633:103::-;;-1:-1:-1;;;;;;;;;;;9633:103:130;;2293:101:35;;;:::i;1638:85::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;1638:85;;34797:265:130;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;36168:122::-;-1:-1:-1;;;;;;;;;;;36168:122:130;;35666:318;;;;;;:::i;:::-;;:::i;12985:204::-;;;;;;:::i;:::-;;:::i;28618:131::-;;;:::i;9960:45::-;;;;;34647:146;;;;;;:::i;:::-;;:::i;28325:174::-;;;;;;:::i;:::-;;:::i;10172:43::-;;;;;32813:136;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32925:19:130;;;;;;;:8;:19;;;;;;;;;32918:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32813:136;;;;;13715:13:184;;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;;3950:47;13788:17;;;13782:24;-1:-1:-1;;;;;13778:50:184;13756:20;;;13749:80;13677:2;13662:18;32813:136:130;13477:358:184;36294:182:130;;;;;;:::i;:::-;;:::i;36834:507::-;;;;;;:::i;:::-;;:::i;2543:215:35:-;;;;;;:::i;:::-;;:::i;20097:2942:130:-;;;;;;:::i;:::-;;:::i;:::-;;;;14440:25:184;;;14508:14;;14501:22;14496:2;14481:18;;14474:50;14540:18;;;14533:34;14428:2;14413:18;20097:2942:130;14244:329:184;33149:167:130;;;;;;:::i;:::-;;:::i;11696:49::-;;;;;-1:-1:-1;;;11696:49:130;;-1:-1:-1;;;;;11696:49:130;;;;;;-1:-1:-1;;;;;14740:31:184;;;14722:50;;14710:2;14695:18;11696:49:130;14578:200:184;34473:170:130;34571:7;34593:45;:10;34617:9;34628;34593:23;:45::i;:::-;34586:52;;34473:170;;;;;:::o;23479:222::-;23562:14;23579:15;:13;:15::i;:::-;23605:32;;-1:-1:-1;;;23605:32:130;;;;;4409:25:184;;;23562:32:130;;-1:-1:-1;;;;;;23605:17:130;;;;;4382:18:184;;23605:32:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;23600:97;;23655:35;;-1:-1:-1;;;23655:35:130;;;;;4409:25:184;;;-1:-1:-1;;;;;23655:20:130;;;;;4382:18:184;;23655:35:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23600:97;23556:145;23479:222;:::o;13193:176::-;1531:13:35;:11;:13::i;:::-;13310:25:130::1;:54:::0;;-1:-1:-1;;;;;13310:54:130;;::::1;-1:-1:-1::0;;;13310:54:130::1;-1:-1:-1::0;;;;13310:54:130;;::::1;::::0;;;::::1;::::0;;13193:176::o;32634:175::-;-1:-1:-1;;;;;;;;;;;;;;;;32759:45:130;;-1:-1:-1;;;32759:45:130;;:17;-1:-1:-1;;;;;32759:33:130;;;;:45;;32793:10;;32759:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34359:110::-;34420:7;34442:22;:10;:20;:22::i;:::-;34435:29;;34359:110;:::o;29180:105::-;29270:10;;-1:-1:-1;;;;;29270:10:130;;29180:105::o;26171:404::-;26289:29;26308:9;26289:18;:29::i;:::-;26353:9;26281:83;;;;;-1:-1:-1;;;26281:83:130;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;26391:19:130;;;26370:18;26391:19;;;:8;:19;;;;;:30;;;;;26435:10;:24;;;26427:84;;;;-1:-1:-1;;;26427:84:130;;;;;;;;;:::i;:::-;-1:-1:-1;26517:53:130;;-1:-1:-1;26517:10:130;26537:9;26548;26559:10;26517:19;:53::i;:::-;26275:300;26171:404;;;:::o;24616:410::-;24710:7;24725:14;24742:15;:13;:15::i;:::-;24725:32;;24763:14;24780:3;-1:-1:-1;;;;;24780:20:130;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;:47;;;;-1:-1:-1;24834:57:130;-1:-1:-1;;;;;24834:5:130;:22;24857:10;24877:4;24780:47;24834:22;:57::i;:::-;24897:35;;-1:-1:-1;;;24897:35:130;;-1:-1:-1;;;;;24897:5:130;:13;;;;:35;;24919:3;;24925:6;;24897:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24939:34:130;;-1:-1:-1;;;24939:34:130;;-1:-1:-1;;;;;24939:11:130;;;;;:34;;24959:4;;24966:6;;24939:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24987:34:130;;-1:-1:-1;;;24987:34:130;;-1:-1:-1;;;;;24987:19:130;;;-1:-1:-1;24987:19:130;;-1:-1:-1;24987:34:130;;25007:8;;25017:3;;24987:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24980:41;24616:410;-1:-1:-1;;;;;24616:410:130:o;35325:337::-;35446:16;35472:21;35510:10;:17;-1:-1:-1;;;;;35496:32:130;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;35496:32:130;;;;;;;;;;;;;;;-1:-1:-1;35472:56:130;-1:-1:-1;35539:9:130;35534:106;35558:10;:17;35554:1;:21;35534:106;;;35600:8;:23;35609:10;35620:1;35609:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;35600:23:130;-1:-1:-1;;;;;35600:23:130;;;;;;;;;;;;:33;;35590:43;;;;;;;;;;;;;;;;;;;;;;;;;:4;35595:1;35590:7;;;;;;;;:::i;:::-;;;;;;;;;;:43;35577:3;;35534:106;;;-1:-1:-1;35653:4:130;35325:337;-1:-1:-1;;35325:337:130:o;27583:316::-;27693:12;27708:28;27724:11;27708:15;:28::i;:::-;27693:43;;27764:21;27782:2;27764:17;:21::i;:::-;27750:10;;-1:-1:-1;;;;;27750:35:130;;;27742:85;;;;-1:-1:-1;;;27742:85:130;;;;;;;;:::i;:::-;-1:-1:-1;27833:61:130;-1:-1:-1;;;;;;;;;;;27863:11:130;27876:7;27885:8;27833:5;:61::i;27903:138::-;-1:-1:-1;;;;;28009:20:130;27990:4;28009:20;;;:9;:20;;;;;:27;;;;;;27903:138::o;33872:344::-;33976:7;;34009:45;:10;34033:9;34044;34009:23;:45::i;:::-;33991:63;-1:-1:-1;34064:12:130;;:46;;;;;34101:9;-1:-1:-1;;;;;34080:30:130;:17;:15;:17::i;:::-;-1:-1:-1;;;;;34080:30:130;;34064:46;34060:132;;;34127:58;:10;-1:-1:-1;;;;;;;;;;;34175:9:130;34127:23;:58::i;:::-;34120:65;;;;;14182:356;1531:13:35;:11;:13::i;:::-;14270:7:130;-1:-1:-1;;;;;14270:21:130;::::1;14262:73;;;;-1:-1:-1::0;;;14262:73:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14350:18:130;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;::::0;14360:7;;14350:25:::1;;14349:26;14341:81;;;;-1:-1:-1::0;;;14341:81:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14428:18:130;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;:32:::0;;-1:-1:-1;;14428:32:130::1;14456:4;14428:32;::::0;;14466:67:::1;14479:26;:15;:24;:26::i;:::-;14466:7;::::0;-1:-1:-1;;;;;14507:25:130;::::1;14466:12;:67::i;:::-;;;14182:356:::0;:::o;34220:135::-;34295:7;34317:33;:10;34340:9;34317:22;:33::i;35988:176::-;36089:7;36111:48;:10;36135;36147:11;36111:23;:48::i;16518:2533::-;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:130;;;;;;;;:::i;:::-;-1:-1:-1;16773:28:130::1;16825:10;16804:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;16804:31:130::1;;16773:62;;16930:21;16926:115;;;17022:10;16969:23:::0;16961:73:::1;;;;-1:-1:-1::0;;;16961:73:130::1;;;;;;;;:::i;:::-;;16926:115;17118:35;17131:10;17143:9;17118:12;:35::i;:::-;17117:36;17185:10;17197:9;17109:99;;;;;;-1:-1:-1::0;;;17109:99:130::1;;;;;;;;;:::i;:::-;;;17319:23;17315:191;;;17370:47;-1:-1:-1::0;;;;;;;;;;;17407:9:130;17370:12:::1;:47::i;:::-;-1:-1:-1::0;;;;;;;;;;;9706:27:130;17481:9;;17369:48:::1;17352:147;;;;-1:-1:-1::0;;;17352:147:130::1;;;;;;;;;:::i;:::-;;;17315:191;17891:25;17919:21;:59;;17968:10;17919:59;;;-1:-1:-1::0;;;;;;;;;;;17919:59:130::1;-1:-1:-1::0;;;;;18073:28:130;::::1;;::::0;;;:9:::1;:28;::::0;;;;17891:87;;-1:-1:-1;18073:53:130::1;::::0;18116:9;18073:42:::1;:53::i;:::-;18158:17;18177:9;18058:135;;;;;;-1:-1:-1::0;;;18058:135:130::1;;;;;;;;;:::i;:::-;;;18200:86;18224:9;18235:14;18251;18267:18;18200:23;:86::i;:::-;18531:68;::::0;;;;::::1;::::0;;;;;-1:-1:-1;;;;;18531:68:130;;::::1;;::::0;;::::1;::::0;;;18509:19;;::::1;-1:-1:-1::0;18509:19:130;;;:8:::1;:19:::0;;;;;;:90;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;18509:90:130::1;::::0;;;::::1;;::::0;;18606:68:::1;:10;18626:17:::0;18509:19;18626:17;18606:19:::1;:68::i;:::-;18680:78;:10;18707:17:::0;18726:9;18737:20:::1;18680:26;:78::i;:::-;18765:71;-1:-1:-1::0;;;;;18765:5:130::1;:22;18788:10;18808:4;18815:20;18765:22;:71::i;:::-;18843:14;18860:15;:13;:15::i;:::-;18881:49;::::0;-1:-1:-1;;;18881:49:130;;18843:32;;-1:-1:-1;;;;;;18881:5:130::1;:13;::::0;::::1;::::0;:49:::1;::::0;18843:32;;18909:20:::1;::::0;18881:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18936:48:130::1;::::0;-1:-1:-1;;;18936:48:130;;-1:-1:-1;;;;;18936:11:130;::::1;::::0;::::1;::::0;:48:::1;::::0;18956:4:::1;::::0;18963:20:::1;::::0;18936:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19023:9;-1:-1:-1::0;;;;;18996:50:130::1;19004:17;-1:-1:-1::0;;;;;18996:50:130::1;;19034:11;18996:50;;;;;;:::i;:::-;;;;;;;;16767:2284;;;16518:2533:::0;;;;;;:::o;26987:155::-;27088:49;27094:10;27106:11;27119:7;27128:8;27088:5;:49::i;28979:197::-;29068:7;29098:72;:60;29118:39;29135:10;29118:37;:39::i;:::-;29098:7;;:19;:60::i;:::-;-1:-1:-1;;;;;29098:70:130;;:72::i;2293:101:35:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;34797:265:130:-;34958:16;34991:66;35025:9;35036:8;35046:10;34991:33;:66::i;:::-;34984:73;34797:265;-1:-1:-1;;;;34797:265:130:o;35666:318::-;35857:16;;;35871:1;35857:16;;;;;;;;;35813:7;;;;35857:16;;;;;;;;;;;;-1:-1:-1;35857:16:130;35830:43;;35892:6;35879:7;35887:1;35879:10;;;;;;;;:::i;:::-;;;;;;:19;;;;;35911:65;35945:9;35956:7;35965:10;35911:33;:65::i;:::-;35977:1;35911:68;;;;;;;;:::i;:::-;;;;;;;35904:75;;;35666:318;;;;;:::o;12985:204::-;1531:13:35;:11;:13::i;:::-;13092:10:130::1;::::0;-1:-1:-1;;;;;13092:10:130::1;13084:33:::0;13076:78:::1;;;;-1:-1:-1::0;;;13076:78:130::1;;;;;;;;;;;;13160:10;:24:::0;;-1:-1:-1;;;;;;13160:24:130::1;-1:-1:-1::0;;;;;13160:24:130;;;::::1;::::0;;;::::1;::::0;;12985:204::o;28618:131::-;28685:7;28715:28;:16;:7;:14;:16::i;34647:146::-;34729:7;34751:37;:10;34777;34751:25;:37::i;28325:174::-;-1:-1:-1;;;;;28444:20:130;;28425:4;28444:20;;;:9;:20;;;;;:50;;28484:9;28444:39;:50::i;36294:182::-;36398:7;36420:51;:10;36448;36460;36420:27;:51::i;36834:507::-;-1:-1:-1;;;;;37017:20:130;;36959:7;37017:20;;;:9;:20;;;;;36959:7;37062:39;37079:10;37062:37;:39::i;:::-;37043:58;-1:-1:-1;37108:13:130;37124:44;:5;37043:58;37124:33;:44::i;:::-;37108:60;;37211:9;-1:-1:-1;;;;;37178:42:130;:29;37196:10;37178:17;:29::i;:::-;-1:-1:-1;;;;;37178:42:130;;37174:144;;37239:33;;;:9;:33;;:72;-1:-1:-1;;;;;;;;;;;37301:9:130;37239:61;:72::i;:::-;37230:81;;;;:::i;:::-;;37331:5;-1:-1:-1;;;;;;36834:507:130:o;2543:215:35:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:35;::::1;2623:91;;2700:1;2672:31;;-1:-1:-1::0;;;2672:31:35::1;;;;;;;;:::i;2623:91::-;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;20097:2942:130:-;20215:7;20224:4;20230:7;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:130;;;;;;;;:::i;:::-;-1:-1:-1;20424:10:130::1;20394:27;20492:21:::0;;;:9:::1;:21;::::0;;;;;20540:46:::1;20492:21:::0;20576:9;20540:35:::1;:46::i;:::-;20519:67;;20735:13;20734:14;:49;;;;-1:-1:-1::0;20773:10:130::1;20752:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;20752:31:130::1;;20734:49;:124;;;;-1:-1:-1::0;20795:33:130;::::1;::::0;:9:::1;:33;::::0;:63:::1;-1:-1:-1::0;;;;;;;;;;;20848:9:130;20795:52:::1;:63::i;:::-;20723:289;;;-1:-1:-1::0;;20944:33:130;9698:36:::1;20944:33:::0;-1:-1:-1;20944:9:130::1;:33;::::0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;21001:4:130::1;20723:289;21067:9:::0;21026:13;21018:60:::1;;;;-1:-1:-1::0;;;21018:60:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21085:15:130::1;21103:55;:10;21127:19:::0;21148:9;21103:23:::1;:55::i;:::-;21085:73:::0;-1:-1:-1;21085:73:130;21183:7;21172:18;;::::1;;21164:78;;;::::0;-1:-1:-1;;;21164:78:130;;::::1;::::0;::::1;19707:25:184::0;;;;19748:18;;;19741:34;19680:18;;21164:78:130::1;19533:248:184::0;21164:78:130::1;-1:-1:-1::0;21341:7:130;;-1:-1:-1;21315:23:130::1;21521:18;21501:17;21341:7:::0;21501;:17:::1;:::i;:::-;:38;21484:55;;21833:9;21829:484;;;21860:44;:16:::0;21894:9;21860:33:::1;:44::i;:::-;21933:9;21852:92;;;;;-1:-1:-1::0;;;21852:92:130::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21970:7:130;;-1:-1:-1;22050:53:130::1;:10;22072:19:::0;22093:9;22050:21:::1;:53::i;:::-;22557:75;:10;22584:19:::0;22605:9;22616:15;22557:26:::1;:75::i;:::-;22894:20;22917:15;:13;:15::i;:::-;-1:-1:-1::0;;;;;22917:32:130::1;;22950:10;22962:15;22917:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22993:15:::0;;23010:9;;-1:-1:-1;22993:15:130;;-1:-1:-1;20097:2942:130;-1:-1:-1;;;;;;;;20097:2942:130:o;33149:167::-;33244:7;33266:45;:10;33290:9;33301;33266:23;:45::i;7902:225:147:-;-1:-1:-1;;;;;8067:24:147;;;8043:7;8067:24;;;;;;;;;;;:45;;;;;;;;;;;;:55;;;;;7902:225::o;1796:162:35:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;735:10:48;1855:23:35;1851:101;;735:10:48;1901:40:35;;-1:-1:-1;;;1901:40:35;;;;;;;;:::i;7440:138:147:-;7528:7;7550:23;:5;:12;;:21;:23::i;5188:515::-;5345:19;5367:41;5380:5;5387:9;5398;5367:12;:41::i;:::-;5345:63;;5433:10;-1:-1:-1;;;;;5418:25:147;:11;-1:-1:-1;;;;;5418:25:147;;5414:52;;5453:7;;;5414:52;-1:-1:-1;;;;;5471:24:147;;;:13;:24;;;;;;;;;;;:45;;;;;;;;;;;;:55;;:68;;-1:-1:-1;;;;;;5471:68:147;;;;;;;;;;;5550:51;;;;;5577:11;;5471:68;;5550:51;:::i;:::-;;;;;;;;5608:90;5624:5;5631:11;5644:10;5656:41;5669:5;5676:9;5687;5656:12;:41::i;:::-;5608:15;:90::i;:::-;5339:364;5188:515;;;;:::o;1618:188:46:-;1745:53;;;-1:-1:-1;;;;;20139:32:184;;;1745:53:46;;;20121:51:184;20208:32;;20188:18;;;20181:60;20257:18;;;;20250:34;;;1745:53:46;;;;;;;;;;20094:18:184;;;;1745:53:46;;;;;;;;-1:-1:-1;;;;;1745:53:46;-1:-1:-1;;;1745:53:46;;;1718:81;;1738:5;;1718:19;:81::i;31511:277:130:-;31580:9;31656:24;31683:15;:13;:15::i;:::-;-1:-1:-1;;;;;31683:27:130;;31711:11;31683:40;;;;;;;;;;;;;4409:25:184;;4397:2;4382:18;;4263:177;31683:40:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31736:17;;;;31756:15;;:27;31656:67;;-1:-1:-1;31736:47:130;;;:::i;:::-;31729:54;31511:277;-1:-1:-1;;;31511:277:130:o;29690:357::-;29789:12;29804:28;29820:11;29804:15;:28::i;:::-;29789:43;-1:-1:-1;29903:53:130;:10;29923:6;29931:11;29789:43;29948:7;29903:19;:53::i;:::-;29990:15;:13;:15::i;:::-;:52;;-1:-1:-1;;;29990:52:130;;;;;22328:25:184;;;22369:18;;;22362:34;;;22439:14;;22432:22;22412:18;;;22405:50;-1:-1:-1;;;;;29990:20:130;;;;;;;22301:18:184;;29990:52:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29783:264;29690:357;;;;:::o;6587:223:147:-;-1:-1:-1;;;;;6752:24:147;;;6728:7;6752:24;;;;;;;;;;;:45;;;;;;;;;;:53;;6587:223::o;15296:213:62:-;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;22647:36:184;22699:18;;;22692:34;;;22620:18;;15421:41:62;22466:266:184;15370:103:62;-1:-1:-1;15496:5:62;15296:213::o;1277:210:65:-;1389:16;;1442:38;1450:4;1469:3;1474:5;1442:7;:38::i;:::-;1435:45;;;;1277:210;;;;;;;:::o;7051:192:147:-;-1:-1:-1;;;;;7196:24:147;;7172:7;7196:24;;;;;;;;;;:42;;:31;;:40;:42::i;9595:228::-;-1:-1:-1;;;;;9763:32:147;;9739:7;9763:32;;;:20;;;:32;;;;;;;;:55;;;;;;;;;9595:228;;;;;:::o;2127:620:144:-;2213:4;-1:-1:-1;;;;;2233:22:144;;2225:75;;;;-1:-1:-1;;;2225:75:144;;;;;;;;;;;;-1:-1:-1;;;;;2350:37:144;;;;;;:27;;;:37;;;;;:44;;;2346:77;;;-1:-1:-1;2411:5:144;2404:12;;2346:77;2429:13;2445:19;:5;:17;:19::i;:::-;2510:35;;;;;;;;2525:4;2510:35;;-1:-1:-1;;;;;2510:35:144;;;;;;;;;;-1:-1:-1;;;;;2470:37:144;;-1:-1:-1;2470:37:144;;;:27;;;:37;;;;;;:75;;;;;;-1:-1:-1;;;;;;2470:75:144;;;;;;-1:-1:-1;;;;;;2470:75:144;;;;;;;;;;;2510:35;;-1:-1:-1;2565:26:144;:15;:24;:26::i;:::-;2552:39;;2598:75;2638:3;2643:29;2651:8;-1:-1:-1;;;;;2643:27:144;;:29::i;:::-;-1:-1:-1;;;;;2598:34:144;;;;;;:27;;;:34;;;;;;:75;:39;:75::i;:::-;-1:-1:-1;2679:45:144;;-1:-1:-1;2695:3:144;2700:23;2701:9;:5;2709:1;2701:9;:::i;:::-;-1:-1:-1;;;;;2700:21:144;;:23::i;:::-;2679:5;;:45;:15;:45::i;:::-;-1:-1:-1;2738:4:144;;2127:620;-1:-1:-1;;;;;;2127:620:144:o;30051:1456:130:-;-1:-1:-1;;;;;30342:19:130;;30299:40;30342:19;;;:8;:19;;;;;;;;;30299:72;;;;;;;;;;;;;;;;;;;;;;;;;30393:32;:68;;;;-1:-1:-1;30429:27:130;;;;:32;30393:68;30505:27;;30534;;;;30505;;30377:191;;;;-1:-1:-1;;;30377:191:130;;;;;19707:25:184;;;;19748:18;;;19741:34;19680:18;;30377:191:130;19533:248:184;30377:191:130;;;30913:27;30970:14;:16;;;30988:14;:16;;;30953:52;;;;;;;;23094:19:184;;;23138:2;23129:12;;23122:28;23175:2;23166:12;;22937:247;30953:52:130;;;;-1:-1:-1;;30953:52:130;;;;;;;;;30943:63;;30953:52;30943:63;;;;31022:29;;;;:8;:29;;;;;;30943:63;;-1:-1:-1;30943:63:130;;31022:29;;31021:30;31012:104;;;;-1:-1:-1;;;31012:104:130;;;;;;4409:25:184;;4397:2;4382:18;;4263:177;31012:104:130;-1:-1:-1;31122:29:130;;;;:8;:29;;;;;;;;;:36;;31154:4;-1:-1:-1;;31122:36:130;;;;;;31365:25;;31315:135;;-1:-1:-1;;;31315:135:130;;:17;-1:-1:-1;;;;;31315:35:130;;;;-1:-1:-1;;;31365:25:130;;;-1:-1:-1;;;;;31365:25:130;;31315:135;;31399:14;;31415;;31431:18;;31315:135;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31300:202;;;;-1:-1:-1;;;31300:202:130;;;;;;;;;;;2152:479:147;2313:39;;2339:7;2313:39;-1:-1:-1;;;;;2391:24:147;;;2358:30;2391:24;;;;;;;;;;;2422:29;;;;;;;;;;;:48;;2463:7;;2358:30;2422:48;;2463:7;;2422:48;:::i;:::-;;;;-1:-1:-1;;;;;;;2511:29:147;;;2507:1;2511:29;;;;;;;;;;:39;;;2476:84;;2492:5;;2507:1;2511:39;2552:7;2476:15;:84::i;:::-;2567:28;:15;;;2587:7;2567:19;:28::i;:::-;-1:-1:-1;2601:25:147;;-1:-1:-1;2601:12:147;;;2618:7;2601:16;:25::i;:::-;;;2307:324;2152:479;;;;:::o;2114:297:65:-;2226:24;;2193:7;;;2274:50;2226:4;2312:3;2193:7;2226:24;2274:18;:50::i;:::-;2260:64;-1:-1:-1;2341:8:65;;:63;;2356:41;2370:4;2389:7;2395:1;2389:3;:7;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;;7642:28;;7421:265;2356:41;:48;-1:-1:-1;;;2356:48:65;;-1:-1:-1;;;;;2356:48:65;2341:63;;;-1:-1:-1;2352:1:65;;2114:297;-1:-1:-1;;;;2114:297:65:o;7228:218:62:-;7285:7;-1:-1:-1;;;;;7308:25:62;;7304:105;;;7356:42;;-1:-1:-1;;;7356:42:62;;7387:3;7356:42;;;22647:36:184;22699:18;;;22692:34;;;22620:18;;7356:42:62;22466:266:184;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;37728:2201:130:-;37874:16;37900:26;37943:8;:15;-1:-1:-1;;;;;37929:30:130;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37929:30:130;-1:-1:-1;;;;;;38219:20:130;;38170:46;38219:20;;;:9;:20;;;;;38291:33;;;37900:59;;-1:-1:-1;;;;;;;;;;;;38291:33:130;38352:29;38370:10;38352:17;:29::i;:::-;-1:-1:-1;;;;;38352:42:130;;38330:64;;38401:9;38413:39;38430:10;38413:37;:39::i;:::-;38401:51;-1:-1:-1;38695:17:130;38715:45;:13;38401:51;38715:41;:45::i;:::-;38695:65;;38766:21;38790:14;:63;;38852:1;38790:63;;;38807:42;:10;38846:2;38807:38;:42::i;:::-;38766:87;-1:-1:-1;38859:17:130;38879:25;38766:87;38879:9;:25;:::i;:::-;38859:45;-1:-1:-1;39100:9:130;39095:807;39119:8;:15;39115:1;:19;39095:807;;;39149:13;39165:8;39174:1;39165:11;;;;;;;;:::i;:::-;;;;;;;39149:27;;39200:9;39192:5;:17;39235:5;39242:9;39184:69;;;;;;-1:-1:-1;;;39184:69:130;;;;;19707:25:184;;;;19748:18;;;19741:34;19680:18;;39184:69:130;19533:248:184;39184:69:130;;;39551:9;39543:5;:17;39539:357;;;39587:77;:13;39654:5;39661:2;39587:66;:77::i;:::-;39572:9;39582:1;39572:12;;;;;;;;:::i;:::-;;;;;;:92;-1:-1:-1;;;;;39572:92:130;;;-1:-1:-1;;;;;39572:92:130;;;;;39539:357;;;39683:14;39679:217;;;39724:86;39788:17;39796:9;39788:5;:17;:::i;:::-;39724:10;;39807:2;39724:63;:86::i;39679:217::-;39842:45;;-1:-1:-1;;;39842:45:130;;24559:2:184;39842:45:130;;;24541:21:184;24598:2;24578:18;;;24571:30;-1:-1:-1;;;24617:18:184;;;24610:49;24676:18;;39842:45:130;24357:343:184;39679:217:130;-1:-1:-1;39136:3:130;;39095:807;;;-1:-1:-1;39915:9:130;;37728:2201;-1:-1:-1;;;;;;;;;;;37728:2201:130:o;3442:206:65:-;3537:24;;3504:7;;3578:8;;:63;;3593:41;3607:4;3626:7;3632:1;3626:3;:7;:::i;3593:41::-;:48;-1:-1:-1;;;3593:48:65;;-1:-1:-1;;;;;3593:48:65;3578:63;;;3589:1;3571:70;3442:206;-1:-1:-1;;;3442:206:65:o;8389:209:147:-;-1:-1:-1;;;;;8538:32:147;;8514:7;8538:32;;;:20;;;;:32;;;;;:55;;:44;:53;:55::i;9666:164:144:-;-1:-1:-1;;;;;9781:37:144;9762:4;9781:37;;;:27;;;;;:37;;;;;:44;;;;9666:164::o;8980:242:147:-;-1:-1:-1;;;;;9153:32:147;;9129:7;9153:32;;;:20;;;;:32;;;;;:64;;:44;9206:10;9153:52;:64::i;8247:167:144:-;8353:7;8375:34;:5;8398:10;8375:22;:34::i;:::-;-1:-1:-1;;;;;8368:41:144;;8247:167;-1:-1:-1;;;8247:167:144:o;3008:266::-;-1:-1:-1;;;;;3130:37:144;;3097:4;3130:37;;;:27;;;:37;;;;;;;;3109:58;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3109:58:144;;;;;;;;;3173:46;;3207:5;3200:12;;;;;3173:46;3232:37;3240:5;3247;:11;;;3260:8;3232:7;:37::i;6096:173:147:-;6215:49;6224:5;6231:9;6242;6261:1;6215:8;:49::i;3045:479::-;3206:39;;3232:7;3206:39;-1:-1:-1;;;;;3284:24:147;;;3251:30;3284:24;;;;;;;;;;;3315:29;;;;;;;;;;;:48;;3356:7;;3251:30;3315:48;;3356:7;;3315:48;:::i;:::-;;;;-1:-1:-1;;;;;;;3392:29:147;;;:18;:29;;;;;;;;;;:39;;;3369:84;;3385:5;;3392:39;;;3445:7;3369:15;:84::i;:::-;3460:28;:15;;;3480:7;3460:19;:28::i;:::-;-1:-1:-1;3494:25:147;;-1:-1:-1;3494:12:147;;;3511:7;3494:16;:25::i;2147:118:145:-;2224:7;2246:14;:5;:12;:14::i;:::-;-1:-1:-1;;;;;2239:21:145;;2147:118;-1:-1:-1;;2147:118:145:o;10389:583:147:-;10538:3;-1:-1:-1;;;;;10529:12:147;:5;-1:-1:-1;;;;;10529:12:147;;:28;;;-1:-1:-1;10545:12:147;;10529:28;10567:7;10525:55;-1:-1:-1;;;;;10590:19:147;;;10586:191;;-1:-1:-1;;;;;10658:27:147;;10620:16;10658:27;;;:20;;;;:27;;;;;10620:16;;10658:52;;:39;10702:7;10658:43;:52::i;:::-;10619:91;;;;10744:5;-1:-1:-1;;;;;10723:47:147;;10751:8;10761;10723:47;;;;;;19707:25:184;;;19763:2;19748:18;;19741:34;19695:2;19680:18;;19533:248;10723:47:147;;;;;;;;10611:166;;10586:191;-1:-1:-1;;;;;10787:17:147;;;10783:185;;-1:-1:-1;;;;;10853:25:147;;10815:16;10853:25;;;:20;;;;:25;;;;;10815:16;;10853:50;;:37;10895:7;10853:41;:50::i;:::-;10814:89;;;;10937:3;-1:-1:-1;;;;;10916:45:147;;10942:8;10952;10916:45;;;;;;19707:25:184;;;19763:2;19748:18;;19741:34;19695:2;19680:18;;19533:248;10916:45:147;;;;;;;;10806:162;;10389:583;;;;:::o;7686:720:46:-;7766:18;7794:19;7932:4;7929:1;7922:4;7916:11;7909:4;7903;7899:15;7896:1;7889:5;7882;7877:60;7989:7;7979:176;;8033:4;8027:11;8078:16;8075:1;8070:3;8055:40;8124:16;8119:3;8112:29;7979:176;-1:-1:-1;;8232:1:46;8226:8;8182:16;;-1:-1:-1;8258:15:46;;:68;;8310:11;8325:1;8310:16;;8258:68;;;-1:-1:-1;;;;;8276:26:46;;;:31;8258:68;8254:146;;;8382:5;8349:40;;-1:-1:-1;;;8349:40:46;;;;;;;;:::i;171:148:182:-;235:9;272:43;312:2;289;272:43;:::i;4261:534:147:-;4444:15;4462:47;4479:5;4486:10;4498;4462:16;:47::i;:::-;4444:65;;4515:17;4535:44;4548:5;4555:10;4567:11;4535:12;:44::i;:::-;4515:64;-1:-1:-1;4612:19:147;4624:7;4515:64;4612:19;:::i;:::-;4601:30;;;4670:10;4601:7;4691:19;4703:7;4691:9;:19;:::i;:::-;4586:131;;;;;;;-1:-1:-1;;;4586:131:147;;-1:-1:-1;;;;;24925:32:184;;;4586:131:147;;;24907:51:184;24974:18;;;24967:34;;;;25017:18;;;25010:34;24880:18;;4586:131:147;24705:345:184;4586:131:147;-1:-1:-1;;;;;;;;4724:32:147;;;;;;:20;;;:32;;;;;;;;:55;;;;;;;;:66;;4783:7;;4724:32;:66;;4783:7;;4724:66;:::i;:::-;;;;-1:-1:-1;;;;;;;;;4261:534:147:o;4789:922:65:-;4970:11;;4910:16;;;;4996:7;;4992:713;;5019:26;5048:28;5062:4;5068:7;5074:1;5068:3;:7;:::i;5048:28::-;5107:9;;;;-1:-1:-1;5107:9:65;;;;;-1:-1:-1;;;5150:11:65;;-1:-1:-1;;;;;5150:11:65;;5235:13;;;;5231:89;;;5275:30;;-1:-1:-1;;;5275:30:65;;;;;;;;;;;5231:89;5394:3;5383:14;;:7;:14;;;5379:163;;5417:19;;;;-1:-1:-1;;;;;;;;5417:19:65;;;;;;5379:163;;;5485:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:41:65;;;;;;;;;;5475:52;;;;;;;-1:-1:-1;5475:52:65;;;;;;;;;;;;;;-1:-1:-1;;;5475:52:65;;;;;;;;;;5379:163;5563:9;-1:-1:-1;5574:5:65;;-1:-1:-1;5555:25:65;;-1:-1:-1;;;5555:25:65;4992:713;-1:-1:-1;;5621:41:65;;;;;;;;;;;;;;;-1:-1:-1;;;;;5621:41:65;;;;;;;;;;5611:52;;;;;;;-1:-1:-1;5611:52:65;;;;;;;;;;;;;-1:-1:-1;;;5611:52:65;;;;;;;;;;;;-1:-1:-1;;5655:5:65;5677:17;;3156:218:62;3213:7;-1:-1:-1;;;;;3236:25:62;;3232:105;;;3284:42;;-1:-1:-1;;;3284:42:62;;3315:3;3284:42;;;22647:36:184;22699:18;;;22692:34;;;22620:18;;3284:42:62;22466:266:184;957:352:145;1041:7;1050;1065:15;1083:14;:5;:12;:14::i;:::-;1065:32;;1107:7;1118:1;1107:12;1103:58;;-1:-1:-1;;;;;1129:25:145;;-1:-1:-1;1129:25:145;;-1:-1:-1;1129:25:145;;1103:58;1166:14;1183:19;:7;:17;:19::i;:::-;1166:36;;1208:56;1219:26;:15;:24;:26::i;:::-;1247:16;1257:6;1247:7;:16;:::i;:::-;1208:5;;:56;:10;:56::i;:::-;-1:-1:-1;1278:7:145;;-1:-1:-1;1287:16:145;1297:6;1278:7;1287:16;:::i;:::-;-1:-1:-1;;;;;1270:34:145;;;;-1:-1:-1;1270:34:145;;-1:-1:-1;;;957:352:145;;;;;;:::o;6061:433:65:-;6218:7;6237:230;6250:4;6244:3;:10;6237:230;;;6270:11;6284:23;6297:3;6302:4;6284:12;:23::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;6270:37;;-1:-1:-1;6325:35:65;;;;7642:28;;6325:29;;;:35;6321:136;;;6387:3;6380:10;;6321:136;;;6435:7;:3;6441:1;6435:7;:::i;:::-;6429:13;;6321:136;6256:211;6237:230;;;-1:-1:-1;6483:4:65;6061:433;-1:-1:-1;;;6061:433:65:o;7261:301:144:-;7424:7;7454:35;;;:27;;;:35;;;;;7424:7;;7454:65;;7508:10;7454:53;:65::i;:::-;7439:80;;7540:16;:4;-1:-1:-1;;;;;7540:14:144;;:16::i;2731:286:145:-;2824:7;2847:39;:5;2870:15;-1:-1:-1;551:43:182;471:126;2847:39:145;2839:101;;;;-1:-1:-1;;;2839:101:145;;;;;;;;;;;;2953:59;2977:34;2994:5;2977:32;:34::i;:::-;2953:5;;:23;:59::i;4039:1503:144:-;4145:4;;4179:19;:5;:17;:19::i;:::-;4157:41;;4218:11;-1:-1:-1;;;;;4208:21:144;:6;-1:-1:-1;;;;;4208:21:144;;4204:106;;4246:57;;-1:-1:-1;;;4246:57:144;;-1:-1:-1;;;;;25519:32:184;;;4246:57:144;;;25501:51:184;25588:32;;25568:18;;;25561:60;25474:18;;4246:57:144;25327:300:184;4204:106:144;4406:32;;;;;;;;-1:-1:-1;4406:32:144;;;;;;;;;;-1:-1:-1;;;;;4366:37:144;;;;:27;;;:37;;;;;;:72;;;;;;-1:-1:-1;;;;;;4366:72:144;;;;;;-1:-1:-1;;;;;;4366:72:144;;;-1:-1:-1;;;;;4366:72:144;;;;;;;;;;;;;4773:15;-1:-1:-1;4773:11:144;:15;:::i;:::-;4753:35;;4794:10;4807:26;:15;:24;:26::i;:::-;4794:39;;4955:6;-1:-1:-1;;;;;4942:19:144;:9;-1:-1:-1;;;;;4942:19:144;;4938:323;;-1:-1:-1;;;;;5003:38:144;;4971:21;5003:38;;;:27;;;:38;;;;;:59;;:47;;:45;:47::i;:59::-;4971:92;;5117:48;;;;;;;;5132:4;5117:48;;;;;;5145:18;:6;-1:-1:-1;;;;;5145:16:144;;:18::i;:::-;-1:-1:-1;;;;;5117:48:144;;;;;;-1:-1:-1;;;;;5072:42:144;;;;;;:27;;;:42;;;;;;;;:93;;;;;;;;;;;;;;-1:-1:-1;;;;;;5072:93:144;;;;;;;-1:-1:-1;;;;;;5072:93:144;;;;;;;;;;;;;5173:81;;5214:3;;5219:34;;:32;:34::i;:::-;-1:-1:-1;;;;;5173:35:144;;;;;;:27;;;:35;;;;;;:81;:40;:81::i;:::-;;;4963:298;4938:323;-1:-1:-1;;;;;5337:38:144;;5394:1;5337:38;;;:27;;;:38;;;;;:60;;5381:3;;5337:43;:60::i;:::-;;;5475:45;5491:3;5496:23;5497:9;-1:-1:-1;;;;;5496:21:144;;:23::i;:::-;5475:5;;:45;:15;:45::i;:::-;-1:-1:-1;5533:4:144;;4039:1503;-1:-1:-1;;;;;;;;4039:1503:144:o;1532:472:145:-;1616:7;1625;1640:15;1658:14;:5;:12;:14::i;:::-;1640:32;;1682:7;1693:1;1682:12;1678:58;;-1:-1:-1;;;;;1704:25:145;;-1:-1:-1;1704:25:145;;-1:-1:-1;1704:25:145;;1678:58;1741:14;1758:19;:7;:17;:19::i;:::-;1741:36;-1:-1:-1;1868:10:145;1791:7;1741:36;-1:-1:-1;;;;;1791:17:145;;;;;;;;1783:114;;;;-1:-1:-1;;;1783:114:145;;-1:-1:-1;;;;;26055:32:184;;;1783:114:145;;;26037:51:184;-1:-1:-1;;;;;26124:32:184;;;26104:18;;;26097:60;26193:32;26173:18;;;26166:60;26010:18;;1783:114:145;25835:397:184;1783:114:145;;;;1903:56;1914:26;:15;:24;:26::i;:::-;1942:16;1952:6;1942:7;:16;:::i;1903:56::-;-1:-1:-1;1973:7:145;;-1:-1:-1;1982:16:145;1992:6;1973:7;1982:16;:::i;3595:153:61:-;3657:7;3730:11;3740:1;3731:5;;;3730:11;:::i;:::-;3720:21;;3721:5;;;3720:21;:::i;2716:606:65:-;2834:24;;2801:7;;;2834:24;2933:1;2927:7;;2923:234;;;2950:11;2970:14;2980:3;2970:9;:14::i;:::-;2964:20;;:3;:20;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;2950:34;;-1:-1:-1;7642:28:65;;3008:42;;;;;3002:48;;;;2998:149;;;3077:3;3070:10;;2998:149;;;3125:7;:3;3131:1;3125:7;:::i;:::-;3119:13;;2998:149;2936:221;2923:234;3167:11;3181:53;3200:4;3219:3;3224;3229:4;3181:18;:53::i;:::-;3167:67;-1:-1:-1;3252:8:65;;:63;;3267:41;3281:4;3300:7;3306:1;3300:3;:7;:::i;3267:41::-;:48;-1:-1:-1;;;3267:48:65;;-1:-1:-1;;;;;3267:48:65;3252:63;;;3263:1;3252:63;3245:70;2716:606;-1:-1:-1;;;;;;;2716:606:65:o;18080:5181:61:-;18128:7;18246:1;18241;:6;18237:53;;-1:-1:-1;18274:1:61;18080:5181::o;18237:53::-;19230:1;19258;-1:-1:-1;;;19278:16:61;;19274:92;;19321:3;19314:10;;;;;19349:2;19342:9;19274:92;-1:-1:-1;;;19383:2:61;:15;19379:90;;19425:2;19418:9;;;;;19452:2;19445:9;19379:90;-1:-1:-1;;;19486:2:61;:15;19482:90;;19528:2;19521:9;;;;;19555:2;19548:9;19482:90;19596:7;19589:2;:15;19585:89;;19631:2;19624:9;;;;;19658:1;19651:8;19585:89;19698:6;19691:2;:14;19687:87;;19732:1;19725:8;;;;;19758:1;19751:8;19687:87;19798:6;19791:2;:14;19787:87;;19832:1;19825:8;;;;;19858:1;19851:8;19787:87;19898:6;19891:2;:14;19887:61;;19932:1;19925:8;19887:61;20374:1;:6;20385:1;20373:13;;;;;22284:1;20373:13;22284:6;;;;:::i;:::-;;22279:2;:11;22278:18;;22273:23;;22404:1;22397:2;22393:1;:6;;;;;:::i;:::-;;22388:2;:11;22387:18;;22382:23;;22515:1;22508:2;22504:1;:6;;;;;:::i;:::-;;22499:2;:11;22498:18;;22493:23;;22624:1;22617:2;22613:1;:6;;;;;:::i;:::-;;22608:2;:11;22607:18;;22602:23;;22734:1;22727:2;22723:1;:6;;;;;:::i;:::-;;22718:2;:11;22717:18;;22712:23;;22844:1;22837:2;22833:1;:6;;;;;:::i;:::-;;22828:2;:11;22827:18;;22822:23;;23216:28;23241:2;23237:1;:6;;;;;:::i;:::-;;23232:11;;;34795:145:62;23216:28:61;23211:33;;;18080:5181;-1:-1:-1;;;18080:5181:61:o;14:131:184:-;-1:-1:-1;;;;;89:31:184;;79:42;;69:70;;135:1;132;125:12;150:388;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;-1:-1:-1;460:2:184;445:18;;432:32;473:33;432:32;473:33;:::i;:::-;525:7;515:17;;;150:388;;;;;:::o;543:203::-;-1:-1:-1;;;;;707:32:184;;;;689:51;;677:2;662:18;;543:203::o;751:226::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;-1:-1:-1;924:23:184;;751:226;-1:-1:-1;751:226:184:o;982:284::-;1040:6;1093:2;1081:9;1072:7;1068:23;1064:32;1061:52;;;1109:1;1106;1099:12;1061:52;1148:9;1135:23;-1:-1:-1;;;;;1191:5:184;1187:30;1180:5;1177:41;1167:69;;1232:1;1229;1222:12;1271:247;1330:6;1383:2;1371:9;1362:7;1358:23;1354:32;1351:52;;;1399:1;1396;1389:12;1351:52;1438:9;1425:23;1457:31;1482:5;1457:31;:::i;1523:127::-;1584:10;1579:3;1575:20;1572:1;1565:31;1615:4;1612:1;1605:15;1639:4;1636:1;1629:15;1655:257;1727:4;1721:11;;;1759:17;;-1:-1:-1;;;;;1791:34:184;;1827:22;;;1788:62;1785:88;;;1853:18;;:::i;:::-;1889:4;1882:24;1655:257;:::o;1917:252::-;1989:2;1983:9;2031:3;2019:16;;-1:-1:-1;;;;;2050:34:184;;2086:22;;;2047:62;2044:88;;;2112:18;;:::i;2174:255::-;2246:2;2240:9;2288:6;2276:19;;-1:-1:-1;;;;;2310:34:184;;2346:22;;;2307:62;2304:88;;;2372:18;;:::i;2434:253::-;2506:2;2500:9;2548:4;2536:17;;-1:-1:-1;;;;;2568:34:184;;2604:22;;;2565:62;2562:88;;;2630:18;;:::i;2692:253::-;2764:2;2758:9;2806:4;2794:17;;-1:-1:-1;;;;;2826:34:184;;2862:22;;;2823:62;2820:88;;;2888:18;;:::i;2950:275::-;3021:2;3015:9;3086:2;3067:13;;-1:-1:-1;;3063:27:184;3051:40;;-1:-1:-1;;;;;3106:34:184;;3142:22;;;3103:62;3100:88;;;3168:18;;:::i;:::-;3204:2;3197:22;2950:275;;-1:-1:-1;2950:275:184:o;3230:386::-;3284:5;3332:4;3320:9;3315:3;3311:19;3307:30;3304:50;;;3350:1;3347;3340:12;3304:50;3372:22;;:::i;:::-;3439:23;;3471:22;;3566:2;3551:18;;;3538:32;3586:14;;;3579:31;;;;-1:-1:-1;3363:31:184;3230:386;-1:-1:-1;3230:386:184:o;3621:229::-;3707:6;3760:2;3748:9;3739:7;3735:23;3731:32;3728:52;;;3776:1;3773;3766:12;3728:52;3799:45;3836:7;3825:9;3799:45;:::i;4008:250::-;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;;3950:47;4196:2;4181:18;;4208:44;3855:148;4673:529;4750:6;4758;4766;4819:2;4807:9;4798:7;4794:23;4790:32;4787:52;;;4835:1;4832;4825:12;4787:52;4874:9;4861:23;4893:31;4918:5;4893:31;:::i;:::-;4943:5;-1:-1:-1;5000:2:184;4985:18;;4972:32;5013:33;4972:32;5013:33;:::i;:::-;5065:7;-1:-1:-1;5124:2:184;5109:18;;5096:32;5137:33;5096:32;5137:33;:::i;:::-;5189:7;5179:17;;;4673:529;;;;;:::o;5618:183::-;5678:4;-1:-1:-1;;;;;5703:6:184;5700:30;5697:56;;;5733:18;;:::i;:::-;-1:-1:-1;5778:1:184;5774:14;5790:4;5770:25;;5618:183::o;5806:961::-;5890:6;5943:2;5931:9;5922:7;5918:23;5914:32;5911:52;;;5959:1;5956;5949:12;5911:52;5999:9;5986:23;-1:-1:-1;;;;;6024:6:184;6021:30;6018:50;;;6064:1;6061;6054:12;6018:50;6087:22;;6140:4;6132:13;;6128:27;-1:-1:-1;6118:55:184;;6169:1;6166;6159:12;6118:55;6209:2;6196:16;6232:64;6248:47;6288:6;6248:47;:::i;:::-;6232:64;:::i;:::-;6318:3;6342:6;6337:3;6330:19;6374:2;6369:3;6365:12;6358:19;;6429:2;6419:6;6416:1;6412:14;6408:2;6404:23;6400:32;6386:46;;6455:7;6447:6;6444:19;6441:39;;;6476:1;6473;6466:12;6441:39;6508:2;6504;6500:11;6489:22;;6520:217;6536:6;6531:3;6528:15;6520:217;;;6616:3;6603:17;6633:31;6658:5;6633:31;:::i;:::-;6677:18;;6724:2;6553:12;;;;6715;;;;6520:217;;6772:684;7016:2;7028:21;;;7098:13;;7001:18;;;7120:22;;;6968:4;;7199:15;;;7173:2;7158:18;;;6968:4;7242:188;7256:6;7253:1;7250:13;7242:188;;;7305:45;7346:3;7337:6;7331:13;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;3950:47;3855:148;7305:45;7417:2;7405:15;;;;;7379:2;7370:12;;;;;7278:1;7271:9;7242:188;;;-1:-1:-1;7447:3:184;;6772:684;-1:-1:-1;;;;;6772:684:184:o;8062:118::-;8148:5;8141:13;8134:21;8127:5;8124:32;8114:60;;8170:1;8167;8160:12;8185:128;8250:20;;8279:28;8250:20;8279:28;:::i;:::-;8185:128;;;:::o;8318:481::-;8392:6;8400;8408;8461:2;8449:9;8440:7;8436:23;8432:32;8429:52;;;8477:1;8474;8467:12;8429:52;8522:23;;;-1:-1:-1;8642:2:184;8627:18;;8614:32;;-1:-1:-1;8724:2:184;8709:18;;8696:32;8737:30;8696:32;8737:30;:::i;8804:367::-;8872:6;8880;8933:2;8921:9;8912:7;8908:23;8904:32;8901:52;;;8949:1;8946;8939:12;8901:52;8988:9;8975:23;9007:31;9032:5;9007:31;:::i;:::-;9057:5;9135:2;9120:18;;;;9107:32;;-1:-1:-1;;;8804:367:184:o;9176:1357::-;9358:6;9366;9374;9382;9390;9398;9442:9;9433:7;9429:23;9472:3;9468:2;9464:12;9461:32;;;9489:1;9486;9479:12;9461:32;9528:9;9515:23;9547:31;9572:5;9547:31;:::i;:::-;9597:5;-1:-1:-1;9654:2:184;9639:18;;9626:32;9667:33;9626:32;9667:33;:::i;:::-;9719:7;-1:-1:-1;9745:54:184;9791:7;9786:2;9771:18;;9745:54;:::i;:::-;9735:64;-1:-1:-1;9834:3:184;-1:-1:-1;;9815:17:184;;9811:27;9808:47;;;9851:1;9848;9841:12;9808:47;;9879:22;;:::i;:::-;9974:3;9959:19;;9946:33;9988:24;;10085:3;10070:19;;10057:33;10119:2;10106:16;;10099:33;10205:3;10190:19;;10177:33;10239:2;10226:16;;10219:33;10325:3;10310:19;;10297:33;10359:2;10346:16;;10339:33;9995:7;-1:-1:-1;10417:55:184;10464:7;10458:3;10443:19;;10417:55;:::i;:::-;10407:65;;10491:36;10522:3;10511:9;10507:19;10491:36;:::i;:::-;10481:46;;9176:1357;;;;;;;;:::o;10801:1233::-;10935:6;10943;10951;11004:2;10992:9;10983:7;10979:23;10975:32;10972:52;;;11020:1;11017;11010:12;10972:52;11059:9;11046:23;11078:31;11103:5;11078:31;:::i;:::-;11128:5;-1:-1:-1;11206:2:184;11191:18;;11178:32;;-1:-1:-1;11287:2:184;11272:18;;11259:32;-1:-1:-1;;;;;11303:30:184;;11300:50;;;11346:1;11343;11336:12;11300:50;11369:22;;11422:4;11414:13;;11410:27;-1:-1:-1;11400:55:184;;11451:1;11448;11441:12;11400:55;11491:2;11478:16;11514:64;11530:47;11570:6;11530:47;:::i;11514:64::-;11600:3;11624:6;11619:3;11612:19;11656:2;11651:3;11647:12;11640:19;;11711:2;11701:6;11698:1;11694:14;11690:2;11686:23;11682:32;11668:46;;11737:7;11729:6;11726:19;11723:39;;;11758:1;11755;11748:12;11723:39;11790:2;11786;11782:11;11771:22;;11802:202;11818:6;11813:3;11810:15;11802:202;;;11912:17;;11942:20;;11991:2;11835:12;;;;11982;;;;11802:202;;;12023:5;12013:15;;;;;;10801:1233;;;;;:::o;12039:637::-;12229:2;12241:21;;;12311:13;;12214:18;;;12333:22;;;12181:4;;12412:15;;;12386:2;12371:18;;;12181:4;12455:195;12469:6;12466:1;12463:13;12455:195;;;12534:13;;-1:-1:-1;;;;;12530:39:184;12518:52;;12599:2;12625:15;;;;12590:12;;;;12566:1;12484:9;12455:195;;12681:519;12790:6;12798;12806;12859:2;12847:9;12838:7;12834:23;12830:32;12827:52;;;12875:1;12872;12865:12;12827:52;12914:9;12901:23;12933:31;12958:5;12933:31;:::i;:::-;12983:5;13061:2;13046:18;;13033:32;;-1:-1:-1;13164:2:184;13149:18;;;13136:32;;12681:519;-1:-1:-1;;;12681:519:184:o;14783:138::-;14862:13;;14884:31;14862:13;14884:31;:::i;14926:745::-;15025:6;15085:3;15073:9;15064:7;15060:23;15056:33;15101:2;15098:22;;;15116:1;15113;15106:12;15098:22;-1:-1:-1;15158:22:184;;:::i;:::-;15225:16;;15250:22;;15338:2;15323:18;;;15317:25;15358:14;;;15351:31;15427:2;15412:18;;15406:25;15440:33;15406:25;15440:33;:::i;:::-;15500:2;15489:14;;15482:31;15558:2;15543:18;;15537:25;15571:30;15537:25;15571:30;:::i;:::-;15628:2;15617:14;;15610:31;15621:5;14926:745;-1:-1:-1;;;14926:745:184:o;15676:383::-;15741:5;15789:4;15777:9;15772:3;15768:19;15764:30;15761:50;;;15807:1;15804;15797:12;15761:50;15829:22;;:::i;:::-;15896:16;;15921:22;;16009:2;15994:18;;;15988:25;16029:14;;;16022:31;;;;-1:-1:-1;15820:31:184;15676:383;-1:-1:-1;15676:383:184:o;16064:251::-;16161:6;16214:2;16202:9;16193:7;16189:23;16185:32;16182:52;;;16230:1;16227;16220:12;16182:52;16253:56;16301:7;16290:9;16253:56;:::i;16320:300::-;-1:-1:-1;;;;;16512:32:184;;;16494:51;;16581:32;;16576:2;16561:18;;16554:60;16482:2;16467:18;;16320:300::o;16625:1422::-;16727:6;16771:9;16762:7;16758:23;16808:3;16804:2;16800:12;16824:2;16821:22;;;16839:1;16836;16829:12;16821:22;-1:-1:-1;16881:22:184;;:::i;:::-;16923:4;16919:2;16915:13;16912:33;;;16941:1;16938;16931:12;16912:33;16969:22;;:::i;:::-;17036:16;;17061:24;;17151:2;17136:18;;;17130:25;17171:16;;;17164:33;17206:22;;;17294:4;17279:20;;;17273:27;17316:14;;;17309:31;;;;17406:2;17391:18;;;17385:25;17426:16;;;17419:33;;;;17518:3;17503:19;;;17497:26;17539:14;;;17532:31;;;;17629:3;17614:19;;;17608:26;17650:15;;;17643:32;;;;17741:3;17726:19;;;17720:26;17762:15;;;17755:32;;;;17853:3;17838:19;;;17832:26;17874:15;;;17867:32;;;;17967:6;17952:22;;;17946:29;17991:15;;;17984:33;;;;-1:-1:-1;17213:5:184;;16625:1422;-1:-1:-1;;16625:1422:184:o;18052:274::-;-1:-1:-1;;;;;18244:32:184;;;;18226:51;;18308:2;18293:18;;18286:34;18214:2;18199:18;;18052:274::o;18331:245::-;18398:6;18451:2;18439:9;18430:7;18426:23;18422:32;18419:52;;;18467:1;18464;18457:12;18419:52;18499:9;18493:16;18518:28;18540:5;18518:28;:::i;18904:230::-;18974:6;19027:2;19015:9;19006:7;19002:23;18998:32;18995:52;;;19043:1;19040;19033:12;18995:52;-1:-1:-1;19088:16:184;;18904:230;-1:-1:-1;18904:230:184:o;19139:127::-;19200:10;19195:3;19191:20;19188:1;19181:31;19231:4;19228:1;19221:15;19255:4;19252:1;19245:15;19271:127;19332:10;19327:3;19323:20;19320:1;19313:31;19363:4;19360:1;19353:15;19387:4;19384:1;19377:15;19403:125;19468:9;;;19489:10;;;19486:36;;;19502:18;;:::i;19786:128::-;19853:9;;;19874:11;;;19871:37;;;19888:18;;:::i;20295:158::-;20385:13;;20427:1;20417:12;;20407:40;;20443:1;20440;20433:12;20458:1669;20555:6;20599:9;20590:7;20586:23;20636:3;20632:2;20628:12;20652:2;20649:22;;;20667:1;20664;20657:12;20649:22;-1:-1:-1;20709:22:184;;:::i;:::-;20751:4;20747:2;20743:13;20740:33;;;20769:1;20766;20759:12;20740:33;20797:22;;:::i;:::-;20864:16;;20889:24;;20979:2;20964:18;;;20958:25;20999:16;;;20992:33;21091:2;21076:18;;;21070:25;21111:16;;;21104:33;21203:2;21188:18;;;21182:25;21223:16;;;21216:33;21315:3;21300:19;;;21294:26;21336:17;;;21329:34;21429:3;21414:19;;;21408:26;21450:17;;;21443:34;21543:4;21528:20;;;21522:27;21565:18;;;21558:35;21602:22;;;20782:37;-1:-1:-1;21656:62:184;21712:4;21697:20;;21656:62;:::i;:::-;21651:2;21644:5;21640:14;21633:86;21751:50;21796:3;21785:9;21781:19;21751:50;:::i;:::-;21746:2;21739:5;21735:14;21728:74;21834:50;21879:3;21868:9;21864:19;21834:50;:::i;:::-;21829:2;21818:14;;21811:74;21951:3;21936:19;;21930:26;21983:3;21972:15;;21965:32;;;21930:26;-1:-1:-1;22030:66:184;22088:7;22082:3;22067:19;;22030:66;:::i;:::-;22024:3;22013:15;;22006:91;22017:5;20458:1669;-1:-1:-1;;;;20458:1669:184:o;22737:195::-;-1:-1:-1;;;;;22806:27:184;;;22835;;;22802:61;;22875:28;;22872:54;;;22906:18;;:::i;23371:709::-;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;;3950:47;23723:3;23708:19;;23822:6;23816:13;23811:2;23800:9;23796:18;23789:41;23884:4;23876:6;23872:17;23866:24;23861:2;23850:9;23846:18;23839:52;23946:2;23938:6;23934:15;23928:22;23922:3;23911:9;23907:19;23900:51;24006:2;23998:6;23994:15;23988:22;23982:3;23971:9;23967:19;23960:51;24020:54;24069:3;24058:9;24054:19;24046:6;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;3950:47;3855:148;25632:198;-1:-1:-1;;;;;25732:27:184;;;25703;;;25699:61;;25772:29;;25769:55;;;25804:18;;:::i;26237:127::-;26298:10;26293:3;26289:20;26286:1;26279:31;26329:4;26326:1;26319:15;26353:4;26350:1;26343:15;26369:217;26409:1;26435;26425:132;;26479:10;26474:3;26470:20;26467:1;26460:31;26514:4;26511:1;26504:15;26542:4;26539:1;26532:15;26425:132;-1:-1:-1;26571:9:184;;26369:217::o","linkReferences":{},"immutableReferences":{"93056":[{"start":2054,"length":32},{"start":7138,"length":32}],"93058":[{"start":1283,"length":32},{"start":3993,"length":32},{"start":4078,"length":32},{"start":4196,"length":32},{"start":4339,"length":32}],"93060":[{"start":1360,"length":32},{"start":5406,"length":32}],"93063":[{"start":882,"length":32},{"start":2476,"length":32},{"start":2539,"length":32},{"start":4042,"length":32},{"start":4149,"length":32}]}},"methodIdentifiers":{"ACTIVATION_THRESHOLD()":"b4ac4536","ASSET()":"4800d97f","BONUS_INSTANCE_ADDRESS()":"710ca354","EJECTION_THRESHOLD()":"dbc85752","addRollup(address)":"59264f00","balanceOf(address,address)":"f7888aec","delegate(address,address,address)":"2e341ce0","deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":"6902c67b","effectiveBalanceOf(address,address)":"5338c758","finalizeWithdraw(uint256)":"0928d152","getAttesterCountAtTime(address,uint256)":"ec6e69db","getAttesterFromIndexAtTime(address,uint256,uint256)":"a9cd26c9","getAttestersFromIndicesAtTime(address,uint256,uint256[])":"9796d977","getBonusInstanceAddress()":"9f6bc70c","getConfig(address)":"e48a5f7b","getDelegatee(address,address)":"0015eaaa","getG1PublicKeysFromAddresses(address[])":"3fd20fe1","getGovernance()":"289b3c0d","getLatestRollup()":"b35186a8","getLatestRollupAt(uint256)":"6a915516","getPowerUsed(address,uint256)":"671431c3","getRegistrationDigest((uint256,uint256))":"11d66fee","getVotingPower(address)":"bb4d4436","getVotingPowerAt(address,uint256)":"eaeded5f","getWithdrawer(address)":"0f9f5410","isRegistered(address,address)":"d3da927f","isRollupRegistered(address)":"52f44a14","ownedPKs(bytes32)":"4bd96ece","owner()":"8da5cb5b","proofOfPossessionGasLimit()":"f852fef9","proposeWithLock(address,address)":"30eb4bdd","renounceOwnership()":"715018a6","setGovernance(address)":"ab033ea9","setProofOfPossessionGasLimit(uint64)":"0e9f7e43","supplyOf(address)":"62400e4c","totalSupply()":"18160ddd","transferOwnership(address)":"f2fde38b","vote(uint256,uint256,bool)":"6a18ff7a","voteWithBonus(uint256,uint256,bool)":"52097e4e","withdraw(address,uint256)":"f3fef3a3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__owner\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_activationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ejectionThreshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AddressSnapshotLib__CannotAddAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"name\":\"AddressSnapshotLib__IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"Delegation__InsufficientPower\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"existingPk1x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"existingPk1y\",\"type\":\"uint256\"}],\"name\":\"GSE__CannotChangePublicKeys\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__FailedToRemove\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"GSE__FatalError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__GovernanceAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InstanceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GSE__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__InvalidProofOfPossession\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InvalidRollupAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotLatestRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotWithdrawer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NothingToExit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GSE__OutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"GSE__ProofOfPossessionAlreadySeen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__RollupAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__CheckpointedUintLib__InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CheckpointedUintLib__NotInPast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldDelegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDelegatee\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACTIVATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BONUS_INSTANCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EJECTION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"}],\"name\":\"addRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_publicKeyInG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"x1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y1\",\"type\":\"uint256\"}],\"internalType\":\"struct G2Point\",\"name\":\"_publicKeyInG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_proofOfPossession\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_moveWithLatestRollup\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"effectiveBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getAttesterCountAtTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getAttesterFromIndexAtTime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_indices\",\"type\":\"uint256[]\"}],\"name\":\"getAttestersFromIndicesAtTime\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBonusInstanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"publicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct AttesterConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"getDelegatee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_attesters\",\"type\":\"address[]\"}],\"name\":\"getG1PublicKeysFromAddresses\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGovernance\",\"outputs\":[{\"internalType\":\"contract Governance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getLatestRollupAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"getPowerUsed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_publicKey\",\"type\":\"tuple\"}],\"name\":\"getRegistrationDigest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"}],\"name\":\"getVotingPower\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getVotingPowerAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"getWithdrawer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"}],\"name\":\"isRollupRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"ownedPKs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isRegistered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofOfPossessionGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_payload\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"proposeWithLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Governance\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_proofOfPossessionGasLimit\",\"type\":\"uint64\"}],\"name\":\"setProofOfPossessionGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"}],\"name\":\"supplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"voteWithBonus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"addRollup(address)\":{\"details\":\"rollups only have access to the \\\"bonus instance\\\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.\",\"params\":{\"_rollup\":\"- The address of the rollup to add\"}},\"delegate(address,address,address)\":{\"details\":\"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \\\"active\\\" in order to use it. See `Governance.getProposalState` for more details.\",\"params\":{\"_attester\":\"- The address of the attester to delegate on behalf of\",\"_delegatee\":\"- The delegatee that should receive the power\",\"_instance\":\"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged.\"}},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"details\":\"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.\",\"params\":{\"_attester\":\"- The attester address on behalf of which the deposit is made.\",\"_moveWithLatestRollup\":\"- Whether to deposit into the specific instance, or the bonus instance\",\"_proofOfPossession\":\"- A proof of possessions for the private key corresponding _publicKey in G1 and G2\",\"_publicKeyInG1\":\"- BLS public key for the attester in G1\",\"_publicKeyInG2\":\"- BLS public key for the attester in G2\",\"_withdrawer\":\"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts.\"}},\"effectiveBalanceOf(address,address)\":{\"params\":{\"_attester\":\"- The attester to look at\",\"_instance\":\"- The instance to look at\"},\"returns\":{\"_0\":\"The effective balance of the attester at the instance\"}},\"finalizeWithdraw(uint256)\":{\"details\":\"Will be a no operation if the withdrawal is already collected.\",\"params\":{\"_withdrawalId\":\"- The id of the withdrawal\"}},\"getAttesterCountAtTime(address,uint256)\":{\"params\":{\"_instance\":\"- The instance to look at\",\"_timestamp\":\"- The timestamp to lookup\"},\"returns\":{\"_0\":\"The number of effective attesters at the instance at the time of `_timestamp`\"}},\"getG1PublicKeysFromAddresses(address[])\":{\"params\":{\"_attesters\":\"- The attesters to lookup\"},\"returns\":{\"_0\":\"The G1 public keys of the attesters\"}},\"getLatestRollup()\":{\"returns\":{\"_0\":\"The address of the latest instance\"}},\"getLatestRollupAt(uint256)\":{\"params\":{\"_timestamp\":\"- The timestamp to lookup\"},\"returns\":{\"_0\":\"The address of the latest instance at the time of lookup\"}},\"getRegistrationDigest((uint256,uint256))\":{\"params\":{\"_publicKey\":\"- The public key to get the registration digest of\"},\"returns\":{\"_0\":\"The registration digest of the public key. Sign and submit as a proof of possession.\"}},\"isRegistered(address,address)\":{\"params\":{\"_attester\":\"- The attester to lookup\",\"_instance\":\"- The instance to look at\"},\"returns\":{\"_0\":\"True if the `_attester` is in the set of `_instance`, false otherwise\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proposeWithLock(address,address)\":{\"details\":\"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.\",\"params\":{\"_payload\":\"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\",\"_to\":\"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)\"},\"returns\":{\"_0\":\"The id of the proposal\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"vote(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\",\"_support\":\"- True if supporting the proposal, false otherwise.\"}},\"voteWithBonus(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\"}},\"withdraw(address,uint256)\":{\"details\":\"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \\\"what to do\\\" with the funds. And it must look at the returned amount withdrawn and the bool.\",\"params\":{\"_amount\":\"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.\",\"_attester\":\"- The attester to withdraw from.\"},\"returns\":{\"_0\":\"The actual amount withdrawn.\",\"_1\":\"True if attester is removed from set, false otherwise\",\"_2\":\"The id of the withdrawal at the governance\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BONUS_INSTANCE_ADDRESS()\":{\"notice\":\"Create a special \\\"bonus\\\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \\\"instances\\\", and an \\\"instance\\\" is either the address of a \\\"true\\\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \\\"bonus\\\" address, which has its own accounting. NB: in every other context, \\\"instance\\\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \\\"rollup\\\" if we know we're talking about a rollup (often msg.sender), and \\\"instance\\\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \\\"bonus\\\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \\\"buckets\\\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \\\"effective\\\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \\\"affected instance\\\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc.\"},\"addRollup(address)\":{\"notice\":\"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set\"},\"delegate(address,address,address)\":{\"notice\":\"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions.\"},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"notice\":\"Deposits a new attester\"},\"effectiveBalanceOf(address,address)\":{\"notice\":\"Get the effective balance of the attester at the instance. The effective balance is the balance of the attester at the specific instance or at the bonus if the instance is the latest rollup and he was not at the specific. We can do this as an `or` since the attester may only be active at one of them.\"},\"finalizeWithdraw(uint256)\":{\"notice\":\"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc.\"},\"getAttesterCountAtTime(address,uint256)\":{\"notice\":\"Get the number of effective attesters at the instance at the time of `_timestamp` (including the bonus instance)\"},\"getG1PublicKeysFromAddresses(address[])\":{\"notice\":\"Get the G1 public keys of the attesters NOTE: this function does NOT check if the attesters are CURRENTLY ACTIVE.\"},\"getLatestRollup()\":{\"notice\":\"Get the address of latest instance\"},\"getLatestRollupAt(uint256)\":{\"notice\":\"Get the address of the instance that was latest at time `_timestamp`\"},\"getRegistrationDigest((uint256,uint256))\":{\"notice\":\"Get the registration digest of a public key by hashing the the public key to a point on the curve which may subsequently be signed by the corresponding private key.\"},\"isRegistered(address,address)\":{\"notice\":\"Lookup if the `_attester` is in the `_instance` attester set\"},\"proposeWithLock(address,address)\":{\"notice\":\"Make a proposal to Governance via `Governance.proposeWithLock`\"},\"vote(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to `msg.sender`\"},\"voteWithBonus(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/governance/GSE.sol\":\"GSE\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca\",\"dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167\",\"dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"src/governance/Bn254LibWrapper.sol\":{\"keccak256\":\"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c\",\"dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8\"]},\"src/governance/GSE.sol\":{\"keccak256\":\"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273\",\"dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU\"]},\"src/governance/Governance.sol\":{\"keccak256\":\"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf\",\"dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw\"]},\"src/governance/interfaces/IBn254LibWrapper.sol\":{\"keccak256\":\"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9\",\"dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej\"]},\"src/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff\",\"dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa\"]},\"src/governance/interfaces/IPayload.sol\":{\"keccak256\":\"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c\",\"dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin\"]},\"src/governance/libraries/AddressSnapshotLib.sol\":{\"keccak256\":\"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402\",\"dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp\"]},\"src/governance/libraries/CheckpointedUintLib.sol\":{\"keccak256\":\"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1\",\"dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q\"]},\"src/governance/libraries/ConfigurationLib.sol\":{\"keccak256\":\"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a\",\"dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy\"]},\"src/governance/libraries/DepositDelegationLib.sol\":{\"keccak256\":\"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb\",\"dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb\"]},\"src/governance/libraries/Errors.sol\":{\"keccak256\":\"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa\",\"dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv\"]},\"src/governance/libraries/ProposalLib.sol\":{\"keccak256\":\"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192\",\"dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT\"]},\"src/governance/libraries/compressed-data/Ballot.sol\":{\"keccak256\":\"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012\",\"dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM\"]},\"src/governance/libraries/compressed-data/Configuration.sol\":{\"keccak256\":\"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482\",\"dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv\"]},\"src/governance/libraries/compressed-data/Proposal.sol\":{\"keccak256\":\"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6\",\"dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN\"]},\"src/shared/libraries/BN254Lib.sol\":{\"keccak256\":\"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a\",\"dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52\"]},\"src/shared/libraries/CompressedTimeMath.sol\":{\"keccak256\":\"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3\",\"dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB\"]},\"src/shared/libraries/TimeMath.sol\":{\"keccak256\":\"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914\",\"dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"__owner","type":"address"},{"internalType":"contract IERC20","name":"_asset","type":"address"},{"internalType":"uint256","name":"_activationThreshold","type":"uint256"},{"internalType":"uint256","name":"_ejectionThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"Delegation__InsufficientPower"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__AlreadyRegistered"},{"inputs":[{"internalType":"uint256","name":"existingPk1x","type":"uint256"},{"internalType":"uint256","name":"existingPk1y","type":"uint256"}],"type":"error","name":"GSE__CannotChangePublicKeys"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__FailedToRemove"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"type":"error","name":"GSE__FatalError"},{"inputs":[],"type":"error","name":"GSE__GovernanceAlreadySet"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InstanceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"GSE__InsufficientBalance"},{"inputs":[],"type":"error","name":"GSE__InvalidProofOfPossession"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InvalidRollupAddress"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotLatestRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotWithdrawer"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NothingToExit"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"GSE__OutOfBounds"},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"type":"error","name":"GSE__ProofOfPossessionAlreadySeen"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__RollupAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue"},{"inputs":[],"type":"error","name":"Governance__CheckpointedUintLib__NotInPast"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"oldDelegatee","type":"address","indexed":false},{"internalType":"address","name":"newDelegatee","type":"address","indexed":false}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegatee","type":"address","indexed":true},{"internalType":"uint256","name":"oldValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"instance","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"withdrawer","type":"address","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ACTIVATION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BONUS_INSTANCE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EJECTION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_rollup","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addRollup"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_withdrawer","type":"address"},{"internalType":"struct G1Point","name":"_publicKeyInG1","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"struct G2Point","name":"_publicKeyInG2","type":"tuple","components":[{"internalType":"uint256","name":"x0","type":"uint256"},{"internalType":"uint256","name":"x1","type":"uint256"},{"internalType":"uint256","name":"y0","type":"uint256"},{"internalType":"uint256","name":"y1","type":"uint256"}]},{"internalType":"struct G1Point","name":"_proofOfPossession","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bool","name":"_moveWithLatestRollup","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"effectiveBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdraw"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAttesterCountAtTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAttesterFromIndexAtTime","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"},{"internalType":"uint256[]","name":"_indices","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"getAttestersFromIndicesAtTime","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getBonusInstanceAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"getConfig","outputs":[{"internalType":"struct AttesterConfig","name":"","type":"tuple","components":[{"internalType":"struct G1Point","name":"publicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"withdrawer","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegatee","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address[]","name":"_attesters","type":"address[]"}],"stateMutability":"view","type":"function","name":"getG1PublicKeysFromAddresses","outputs":[{"internalType":"struct G1Point[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getGovernance","outputs":[{"internalType":"contract Governance","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLatestRollup","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLatestRollupAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_delegatee","type":"address"},{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPowerUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct G1Point","name":"_publicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}],"stateMutability":"view","type":"function","name":"getRegistrationDigest","outputs":[{"internalType":"struct G1Point","name":"","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_delegatee","type":"address"}],"stateMutability":"view","type":"function","name":"getVotingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_delegatee","type":"address"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getVotingPowerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"getWithdrawer","outputs":[{"internalType":"address","name":"withdrawer","type":"address"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"}],"stateMutability":"view","type":"function","name":"isRollupRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"stateMutability":"view","type":"function","name":"ownedPKs","outputs":[{"internalType":"bool","name":"isRegistered","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proofOfPossessionGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"contract IPayload","name":"_payload","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeWithLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract Governance","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGovernance"},{"inputs":[{"internalType":"uint64","name":"_proofOfPossessionGasLimit","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setProofOfPossessionGasLimit"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"}],"stateMutability":"view","type":"function","name":"supplyOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"vote"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"voteWithBonus"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addRollup(address)":{"details":"rollups only have access to the \"bonus instance\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.","params":{"_rollup":"- The address of the rollup to add"}},"delegate(address,address,address)":{"details":"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \"active\" in order to use it. See `Governance.getProposalState` for more details.","params":{"_attester":"- The address of the attester to delegate on behalf of","_delegatee":"- The delegatee that should receive the power","_instance":"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged."}},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"details":"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.","params":{"_attester":"- The attester address on behalf of which the deposit is made.","_moveWithLatestRollup":"- Whether to deposit into the specific instance, or the bonus instance","_proofOfPossession":"- A proof of possessions for the private key corresponding _publicKey in G1 and G2","_publicKeyInG1":"- BLS public key for the attester in G1","_publicKeyInG2":"- BLS public key for the attester in G2","_withdrawer":"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts."}},"effectiveBalanceOf(address,address)":{"params":{"_attester":"- The attester to look at","_instance":"- The instance to look at"},"returns":{"_0":"The effective balance of the attester at the instance"}},"finalizeWithdraw(uint256)":{"details":"Will be a no operation if the withdrawal is already collected.","params":{"_withdrawalId":"- The id of the withdrawal"}},"getAttesterCountAtTime(address,uint256)":{"params":{"_instance":"- The instance to look at","_timestamp":"- The timestamp to lookup"},"returns":{"_0":"The number of effective attesters at the instance at the time of `_timestamp`"}},"getG1PublicKeysFromAddresses(address[])":{"params":{"_attesters":"- The attesters to lookup"},"returns":{"_0":"The G1 public keys of the attesters"}},"getLatestRollup()":{"returns":{"_0":"The address of the latest instance"}},"getLatestRollupAt(uint256)":{"params":{"_timestamp":"- The timestamp to lookup"},"returns":{"_0":"The address of the latest instance at the time of lookup"}},"getRegistrationDigest((uint256,uint256))":{"params":{"_publicKey":"- The public key to get the registration digest of"},"returns":{"_0":"The registration digest of the public key. Sign and submit as a proof of possession."}},"isRegistered(address,address)":{"params":{"_attester":"- The attester to lookup","_instance":"- The instance to look at"},"returns":{"_0":"True if the `_attester` is in the set of `_instance`, false otherwise"}},"owner()":{"details":"Returns the address of the current owner."},"proposeWithLock(address,address)":{"details":"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.","params":{"_payload":"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.","_to":"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)"},"returns":{"_0":"The id of the proposal"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"vote(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on","_support":"- True if supporting the proposal, false otherwise."}},"voteWithBonus(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on"}},"withdraw(address,uint256)":{"details":"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \"what to do\" with the funds. And it must look at the returned amount withdrawn and the bool.","params":{"_amount":"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.","_attester":"- The attester to withdraw from."},"returns":{"_0":"The actual amount withdrawn.","_1":"True if attester is removed from set, false otherwise","_2":"The id of the withdrawal at the governance"}}},"version":1},"userdoc":{"kind":"user","methods":{"BONUS_INSTANCE_ADDRESS()":{"notice":"Create a special \"bonus\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \"instances\", and an \"instance\" is either the address of a \"true\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \"bonus\" address, which has its own accounting. NB: in every other context, \"instance\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \"rollup\" if we know we're talking about a rollup (often msg.sender), and \"instance\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \"bonus\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \"buckets\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \"effective\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \"affected instance\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc."},"addRollup(address)":{"notice":"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set"},"delegate(address,address,address)":{"notice":"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions."},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"notice":"Deposits a new attester"},"effectiveBalanceOf(address,address)":{"notice":"Get the effective balance of the attester at the instance. The effective balance is the balance of the attester at the specific instance or at the bonus if the instance is the latest rollup and he was not at the specific. We can do this as an `or` since the attester may only be active at one of them."},"finalizeWithdraw(uint256)":{"notice":"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc."},"getAttesterCountAtTime(address,uint256)":{"notice":"Get the number of effective attesters at the instance at the time of `_timestamp` (including the bonus instance)"},"getG1PublicKeysFromAddresses(address[])":{"notice":"Get the G1 public keys of the attesters NOTE: this function does NOT check if the attesters are CURRENTLY ACTIVE."},"getLatestRollup()":{"notice":"Get the address of latest instance"},"getLatestRollupAt(uint256)":{"notice":"Get the address of the instance that was latest at time `_timestamp`"},"getRegistrationDigest((uint256,uint256))":{"notice":"Get the registration digest of a public key by hashing the the public key to a point on the curve which may subsequently be signed by the corresponding private key."},"isRegistered(address,address)":{"notice":"Lookup if the `_attester` is in the `_instance` attester set"},"proposeWithLock(address,address)":{"notice":"Make a proposal to Governance via `Governance.proposeWithLock`"},"vote(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to `msg.sender`"},"voteWithBonus(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal."},"withdraw(address,uint256)":{"notice":"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn."}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/governance/GSE.sol":"GSE"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b","urls":["bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca","dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f","urls":["bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167","dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"src/governance/Bn254LibWrapper.sol":{"keccak256":"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607","urls":["bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c","dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8"],"license":"Apache-2.0"},"src/governance/GSE.sol":{"keccak256":"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a","urls":["bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273","dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU"],"license":"Apache-2.0"},"src/governance/Governance.sol":{"keccak256":"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5","urls":["bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf","dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw"],"license":"Apache-2.0"},"src/governance/interfaces/IBn254LibWrapper.sol":{"keccak256":"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a","urls":["bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9","dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej"],"license":"Apache-2.0"},"src/governance/interfaces/IGovernance.sol":{"keccak256":"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005","urls":["bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff","dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa"],"license":"Apache-2.0"},"src/governance/interfaces/IPayload.sol":{"keccak256":"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3","urls":["bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c","dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin"],"license":"Apache-2.0"},"src/governance/libraries/AddressSnapshotLib.sol":{"keccak256":"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210","urls":["bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402","dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp"],"license":"Apache-2.0"},"src/governance/libraries/CheckpointedUintLib.sol":{"keccak256":"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4","urls":["bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1","dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q"],"license":"Apache-2.0"},"src/governance/libraries/ConfigurationLib.sol":{"keccak256":"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149","urls":["bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a","dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy"],"license":"Apache-2.0"},"src/governance/libraries/DepositDelegationLib.sol":{"keccak256":"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0","urls":["bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb","dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb"],"license":"Apache-2.0"},"src/governance/libraries/Errors.sol":{"keccak256":"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4","urls":["bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa","dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv"],"license":"Apache-2.0"},"src/governance/libraries/ProposalLib.sol":{"keccak256":"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90","urls":["bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192","dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Ballot.sol":{"keccak256":"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d","urls":["bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012","dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Configuration.sol":{"keccak256":"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9","urls":["bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482","dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Proposal.sol":{"keccak256":"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a","urls":["bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6","dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN"],"license":"Apache-2.0"},"src/shared/libraries/BN254Lib.sol":{"keccak256":"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5","urls":["bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a","dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52"],"license":"Apache-2.0"},"src/shared/libraries/CompressedTimeMath.sol":{"keccak256":"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1","urls":["bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3","dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB"],"license":"Apache-2.0"},"src/shared/libraries/TimeMath.sol":{"keccak256":"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f","urls":["bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914","dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3"],"license":"Apache-2.0"}},"version":1},"id":130}
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[{"name":"__owner","type":"address","internalType":"address"},{"name":"_asset","type":"address","internalType":"contract IERC20"},{"name":"_activationThreshold","type":"uint256","internalType":"uint256"},{"name":"_ejectionThreshold","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"ACTIVATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ASSET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"BONUS_INSTANCE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"EJECTION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addRollup","inputs":[{"name":"_rollup","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"delegate","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"},{"name":"_delegatee","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_withdrawer","type":"address","internalType":"address"},{"name":"_publicKeyInG1","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_publicKeyInG2","type":"tuple","internalType":"struct G2Point","components":[{"name":"x0","type":"uint256","internalType":"uint256"},{"name":"x1","type":"uint256","internalType":"uint256"},{"name":"y0","type":"uint256","internalType":"uint256"},{"name":"y1","type":"uint256","internalType":"uint256"}]},{"name":"_proofOfPossession","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_moveWithLatestRollup","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"effectiveBalanceOf","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeWithdraw","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAttesterCountAtTime","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterFromIndexAtTime","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getAttestersFromIndicesAtTime","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"},{"name":"_indices","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getBonusInstanceAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"getConfig","inputs":[{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct AttesterConfig","components":[{"name":"publicKey","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"withdrawer","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getDelegatee","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getG1PublicKeysFromAddresses","inputs":[{"name":"_attesters","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct G1Point[]","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getGovernance","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract Governance"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollup","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getLatestRollupAt","inputs":[{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPowerUsed","inputs":[{"name":"_delegatee","type":"address","internalType":"address"},{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegistrationDigest","inputs":[{"name":"_publicKey","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct G1Point","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getVotingPower","inputs":[{"name":"_delegatee","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getVotingPowerAt","inputs":[{"name":"_delegatee","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawer","inputs":[{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawer","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"},{"name":"_attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRollupRegistered","inputs":[{"name":"_instance","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"ownedPKs","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"isRegistered","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proofOfPossessionGasLimit","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"proposeWithLock","inputs":[{"name":"_payload","type":"address","internalType":"contract IPayload"},{"name":"_to","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGovernance","inputs":[{"name":"_governance","type":"address","internalType":"contract Governance"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProofOfPossessionGasLimit","inputs":[{"name":"_proofOfPossessionGasLimit","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supplyOf","inputs":[{"name":"_instance","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vote","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"voteWithBonus","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"_attester","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bool","internalType":"bool"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"DelegateChanged","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"oldDelegatee","type":"address","indexed":false,"internalType":"address"},{"name":"newDelegatee","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"DelegateVotesChanged","inputs":[{"name":"delegatee","type":"address","indexed":true,"internalType":"address"},{"name":"oldValue","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newValue","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"instance","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero","inputs":[]},{"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"size","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"Delegation__InsufficientPower","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__AlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__CannotChangePublicKeys","inputs":[{"name":"existingPk1x","type":"uint256","internalType":"uint256"},{"name":"existingPk1y","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__FailedToRemove","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__FatalError","inputs":[{"name":"","type":"string","internalType":"string"}]},{"type":"error","name":"GSE__GovernanceAlreadySet","inputs":[]},{"type":"error","name":"GSE__InstanceDoesNotExist","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__InsufficientBalance","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__InvalidProofOfPossession","inputs":[]},{"type":"error","name":"GSE__InvalidRollupAddress","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotLatestRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotRollup","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NotWithdrawer","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__NothingToExit","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"GSE__OutOfBounds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GSE__ProofOfPossessionAlreadySeen","inputs":[{"name":"hashedPK1","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"GSE__RollupAlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__CheckpointedUintLib__NotInPast","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6101006040526040516100119061016c565b604051809103905ff08015801561002a573d5f5f3e3d5ffd5b506001600160a01b031660805260088054600160a01b600160e01b031916613d0960a41b17905534801561005c575f5ffd5b506040516141f73803806141f783398101604081905261007b91610190565b83838383836001600160a01b0381166100ad57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100b68161011d565b506001600160a01b0390921660e05260a05260c0525050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5250506002602052507f45cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c51a805460ff191660011790556101d5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a5c8061379b83390190565b6001600160a01b038116811461018d575f5ffd5b50565b5f5f5f5f608085870312156101a3575f5ffd5b84516101ae81610179565b60208601519094506101bf81610179565b6040860151606090960151949790965092505050565b60805160a05160c05160e05161354d61024e5f395f8181610372015281816109ac015281816109eb01528181610fca015261103501525f8181610550015261151e01525f818161050301528181610f9901528181610fee0152818161106401526110f301525f81816108060152611be2015261354d5ff3fe608060405234801561000f575f5ffd5b506004361061023e575f3560e01c80636a91551611610135578063bb4d4436116100b4578063ec6e69db11610079578063ec6e69db1461062d578063f2fde38b14610640578063f3fef3a314610653578063f7888aec14610681578063f852fef914610694575f5ffd5b8063bb4d443614610525578063d3da927f14610538578063dbc857521461054b578063e48a5f7b14610572578063eaeded5f1461061a575f5ffd5b80639f6bc70c116100fa5780639f6bc70c146104bd578063a9cd26c9146104d0578063ab033ea9146104e3578063b35186a8146104f6578063b4ac4536146104fe575f5ffd5b80636a9155161461045e578063710ca35414610471578063715018a6146104855780638da5cb5b1461048d5780639796d9771461049d575f5ffd5b80634800d97f116101c157806359264f001161018657806359264f00146103ff57806362400e4c14610412578063671431c3146104255780636902c67b146104385780636a18ff7a1461044b575f5ffd5b80634800d97f1461036d5780634bd96ece1461039457806352097e4e146103c657806352f44a14146103d95780635338c758146103ec575f5ffd5b806318160ddd1161020757806318160ddd14610309578063289b3c0d1461031f5780632e341ce01461032757806330eb4bdd1461033a5780633fd20fe11461034d575f5ffd5b806215eaaa146102425780630928d1521461026b5780630e9f7e43146102805780630f9f54101461029357806311d66fee146102e9575b5f5ffd5b610255610250366004612ba7565b6106c6565b6040516102629190612bde565b60405180910390f35b61027e610279366004612bf2565b6106dc565b005b61027e61028e366004612c09565b6107b1565b6102556102a1366004612c2f565b6001600160a01b039081165f90815260036020908152604091829020825160808101845281549381019384526001820154606082015292835260020154909216910181905290565b6102fc6102f7366004612d6e565b6107e6565b6040516102629190612d88565b610311610881565b604051908152602001610262565b610255610891565b61027e610335366004612d9f565b6108a0565b610311610348366004612ba7565b61092a565b61036061035b366004612e09565b610b35565b6040516102629190612e9d565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6103b66103a2366004612bf2565b60046020525f908152604090205460ff1681565b6040519015158152602001610262565b61027e6103d4366004612f11565b610c2b565b6103b66103e7366004612c2f565b610c85565b6103116103fa366004612ba7565b610ca5565b61027e61040d366004612c2f565b610d01565b610311610420366004612c2f565b610dba565b610311610433366004612f3c565b610dc6565b61027e610446366004612f66565b610dd3565b61027e610459366004612f11565b61119e565b61025561046c366004612bf2565b6111aa565b6102555f5160206134d85f395f51905f5281565b61027e6111d0565b5f546001600160a01b0316610255565b6104b06104ab366004613013565b6111e3565b60405161026291906130c0565b5f5160206134d85f395f51905f52610255565b6102556104de366004613100565b6111f8565b61027e6104f1366004612c2f565b611269565b6102556112bc565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b610311610533366004612c2f565b6112ca565b6103b6610546366004612ba7565b6112d6565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b6105ed610580366004612c2f565b604080516080810182525f9181018281526060820183905281526020810191909152506001600160a01b039081165f908152600360209081526040918290208251608081018452815493810193845260018201546060820152928352600201549092169181019190915290565b6040805182518051825260209081015181830152909201516001600160a01b031690820152606001610262565b610311610628366004612f3c565b6112f7565b61031161063b366004612f3c565b611304565b61027e61064e366004612c2f565b61139c565b610666610661366004612f3c565b6113d9565b60408051938452911515602084015290820152606001610262565b61031161068f366004612ba7565b611620565b6008546106ae90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610262565b5f6106d36005848461162d565b90505b92915050565b5f6106e5610891565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa15801561072b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f919061313d565b606001516107ad5760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610796575f5ffd5b505af11580156107a8573d5f5f3e3d5ffd5b505050505b5050565b6107b961165a565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6040805180820182525f80825260208201529051633a62f11160e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e98bc44490610843908590600401612d88565b6040805180830381865afa15801561085d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d691906131c1565b5f61088c6005611686565b905090565b6008546001600160a01b031690565b6108a983610c85565b83906108d2576040516330d32d8760e21b81526004016108c99190612bde565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461091457604051630257d8d760e41b81526004016108c99291906131db565b5061092490506005858585611693565b50505050565b5f5f610934610891565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa158015610974573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099891906131f5565b516020015190506109d46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611753565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610a22908590859060040161329b565b6020604051808303815f875af1158015610a3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6291906132b4565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef2490610a91903090859060040161329b565b5f604051808303815f87803b158015610aa8575f5ffd5b505af1158015610aba573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd9150610aec90889088906004016131db565b6020604051808303815f875af1158015610b08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2c91906132cf565b95945050505050565b60605f82516001600160401b03811115610b5157610b51612c4a565b604051908082528060200260200182016040528015610b9557816020015b604080518082019091525f8082526020820152815260200190600190039081610b6f5790505b5090505f5b8351811015610c245760035f858381518110610bb857610bb86132e6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f016040518060400160405290815f8201548152602001600182015481525050828281518110610c1157610c116132e6565b6020908102919091010152600101610b9a565b5092915050565b5f610c35846117ad565b9050610c40816111aa565b33906001600160a01b03168114610c6b576040516305df8ea560e31b81526004016108c99190612bde565b506109245f5160206134d85f395f51905f5285858561183f565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b5f80610cb3600585856118ce565b905080158015610cdb5750836001600160a01b0316610cd06112bc565b6001600160a01b0316145b156106d357610cf960055f5160206134d85f395f51905f52856118ce565b9150506106d6565b610d0961165a565b806001600160a01b038116610d32576040516327bac29760e21b81526004016108c99190612bde565b506001600160a01b0381165f90815260026020526040902060030154819060ff1615610d715760405162cea8b160e11b81526004016108c99190612bde565b506001600160a01b0381165f908152600260205260409020600301805460ff19166001179055610db5610da3426118f5565b6001906001600160a01b038416611929565b505050565b5f6106d6600583611943565b5f6106d360058484611966565b610ddc33610c85565b3390610dfc576040516319aaa75960e11b81526004016108c99190612bde565b505f33610e076112bc565b6001600160a01b03161490508115610e3b573381610e39576040516305df8ea560e31b81526004016108c99190612bde565b505b610e4533886112d6565b1533889091610e6957604051630d75cd7760e11b81526004016108c99291906131db565b50508015610ebc57610e885f5160206134d85f395f51905f52886112d6565b5f5160206134d85f395f51905f5290889015610eb957604051630d75cd7760e11b81526004016108c99291906131db565b50505b5f82610ec85733610ed7565b5f5160206134d85f395f51905f525b6001600160a01b0381165f908152600260205260409020909150610efb9089611992565b81899091610f1e57604051630d75cd7760e11b81526004016108c99291906131db565b5050610f2c88878787611acc565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610f906005828a81611693565b610fbd6005828a7f0000000000000000000000000000000000000000000000000000000000000000611c90565b6110126001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f0000000000000000000000000000000000000000000000000000000000000000611753565b5f61101b610891565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061108c9084907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b6020604051808303815f875af11580156110a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cc91906132b4565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef249061111b9030907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b5f604051808303815f87803b158015611132575f5ffd5b505af1158015611144573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a60405161118b9190612bde565b60405180910390a3505050505050505050565b610db53384848461183f565b5f6106d66111c26111ba846118f5565b600190611d1f565b6001600160e01b0316611d74565b6111d861165a565b6111e15f611da7565b565b60606111f0848385611df6565b949350505050565b6040805160018082528183019092525f918291906020808301908036833701905050905083815f8151811061122f5761122f6132e6565b602002602001018181525050611246858285611df6565b5f81518110611257576112576132e6565b60200260200101519150509392505050565b61127161165a565b6008546001600160a01b03161561129a576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f61088c6111c26001611fe4565b5f6106d660058361201b565b6001600160a01b0382165f9081526002602052604081206106d3908361203f565b5f6106d360058484612060565b6001600160a01b0382165f90815260026020526040812081611325846118f5565b90505f6113328383612085565b9050856001600160a01b0316611347866111aa565b6001600160a01b031603610b2c57739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526113885f5160206134f85f395f51905f5283612085565b611392908261330e565b9695505050505050565b6113a461165a565b6001600160a01b0381166113cd575f604051631e4fbdf760e01b81526004016108c99190612bde565b6113d681611da7565b50565b5f5f5f6113e533610c85565b3390611405576040516319aaa75960e11b81526004016108c99190612bde565b50335f8181526002602052604081209061141f828961203f565b90508015801561143e5750336114336112bc565b6001600160a01b0316145b80156114785750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526114785f5160206134f85f395f51905f528961203f565b156114bb575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206134d85f395f51905f525f5160206134f85f395f51905f5260015b87816114db5760405163417f3a0560e01b81526004016108c99190612bde565b505f6114e96005858b6118ce565b905080888082101561151757604051635087517f60e11b8152600481019290925260248201526044016108c9565b508890505f7f00000000000000000000000000000000000000000000000000000000000000006115478385613321565b109050801561158a5761155a858c6120a0565b8b9061157a576040516304ca9e7360e31b81526004016108c99190612bde565b5082915061158a6005878d612101565b6115976005878d8561210d565b5f6115a0610891565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b81526004016115cd92919061329b565b6020604051808303815f875af11580156115e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160d91906132cf565b929c919b50919950975050505050505050565b5f6106d3600584846118ce565b6001600160a01b039182165f90815260209384526040808220928416825291909352909120600101541690565b5f546001600160a01b031633146111e1573360405163118cdaa760e01b81526004016108c99190612bde565b5f6106d682600201612194565b5f61169f85858561162d565b9050816001600160a01b0316816001600160a01b0316036116c05750610924565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9061172e90849086906131db565b60405180910390a261174c8582846117478989896118ce565b6121ad565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526109249085906122e6565b5f5f6117b7610891565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b81526004016117e491815260200190565b6101a060405180830381865afa158015611800573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118249190613342565b608081015181515191925061183891612349565b9392505050565b5f611849846117ad565b9050611859600586868487612354565b611861610891565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b1580156118b1575f5ffd5b505af11580156118c3573d5f5f3e3d5ffd5b505050505050505050565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b5f63ffffffff821115611925576040516306dfcc6560e41b815260206004820152602481018390526044016108c9565b5090565b5f80611936858585612407565b915091505b935093915050565b6001600160a01b0381165f9081526020839052604081206106d390600101612194565b6001600160a01b0382165f90815260018401602090815260408083208484529091529020549392505050565b5f6001600160a01b0382166119b95760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156119e257505f6106d6565b5f6119ec84611fe4565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b031916176101009190921602179055909150611a5c426118f5565b9050611a9481611a74866001600160a01b031661254b565b6001600160e01b0385165f90815260018901602052604090209190611929565b50611abf905081611ab7611aa9856001613417565b6001600160e01b031661254b565b879190611929565b5060019695505050505050565b6001600160a01b0384165f908152600360209081526040918290208251808401909352805480845260019091015491830191909152158015611b1057506020810151155b815160208301519091611b3f576040516312d6323b60e11b8152600481019290925260248201526044016108c9565b50505f845f01518560200151604051602001611b65929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff1615611bb257604051636ab4baeb60e11b81526004016108c991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b031691611c33918a918a918a9101613436565b6020604051808303818786fa158015611c4e573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c7391906132b4565b6107a85760405163df4ff27b60e01b815260040160405180910390fd5b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290611cca90849061330e565b90915550506001600160a01b038084165f90815260208390526040812060010154611cf99288929116856121ad565b611d06600182018361257e565b50611d169050600286018361257e565b50505050505050565b81545f9081611d30858583856125f8565b90508015611d6a57611d5485611d47600184613321565b5f91825260209091200190565b54600160201b90046001600160e01b0316610b2c565b505f949350505050565b5f6001600160a01b03821115611925576040516306dfcc6560e41b815260a06004820152602481018390526044016108c9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f83516001600160401b03811115611e1257611e12612c4a565b604051908082528060200260200182016040528015611e3b578160200160208202803683370190505b506001600160a01b0386165f818152600260205260408120739064fb41156d300196d5eb95e0b3c1f08ebc39a882529293505f5160206134f85f395f51905f5291611e85876111aa565b6001600160a01b03161490505f611e9b876118f5565b90505f611ea88583612085565b90505f83611eb6575f611ec0565b611ec08584612085565b90505f611ecd828461330e565b90505f5b8b51811015611fd3575f8c8281518110611eed57611eed6132e6565b6020026020010151905082811081849091611f2457604051635d4bf88360e01b8152600481019290925260248201526044016108c9565b505084811015611f7057611f39898288612653565b8a8381518110611f4b57611f4b6132e6565b60200260200101906001600160a01b031690816001600160a01b031681525050611fca565b8615611f8b57611f39611f838683613321565b899088612653565b604051633d6a4a3b60e21b815260206004820152601360248201527229a427aaa622102722ab22a9102420a82822a760691b60448201526064016108c9565b50600101611ed1565b50969b9a5050505050505050505050565b80545f90801561201357611ffd83611d47600184613321565b54600160201b90046001600160e01b0316611838565b5f9392505050565b6001600160a01b0381165f9081526001808401602052604082206106d39101612194565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b0382165f9081526001808501602052604082206111f0910183612682565b5f6120908383611d1f565b6001600160e01b03169392505050565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906120f2575f9150506106d6565b6111f0848260200151856126bc565b610db58383835f611693565b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290612147908490613321565b90915550506001600160a01b038084165f90815260208390526040812060010154612177928892911690856121ad565b61218460018201836128d9565b50611d16905060028601836128d9565b5f61219e82611fe4565b6001600160e01b031692915050565b816001600160a01b0316836001600160a01b031614806121cb575080155b610924576001600160a01b03831615612258576001600160a01b0383165f90815260018086016020526040822082916122059101846128d9565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161224d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610924576001600160a01b0382165f908152600180860160205260408220829161228e91018461257e565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516122d6929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af180612305576040513d5f823e3d81fd5b50505f513d9150811561231c578060011415612329565b6001600160a01b0384163b155b156109245783604051635274afe760e01b81526004016108c99190612bde565b5f6106d3828461330e565b5f612360868685612060565b90505f61236e878787611966565b905061237a838261330e565b8210158683612389868561330e565b9091926123c25760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016108c9565b5050506001600160a01b0386165f9081526001880160209081526040808320888452909152812080548592906123f990849061330e565b909155505050505050505050565b82545f90819080156124f3575f61242387611d47600185613321565b805490915063ffffffff80821691600160201b90046001600160e01b031690881682111561246457604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff160361249757825463ffffffff16600160201b6001600160e01b038916021783556124e5565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061193b92505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b02919093161792019190915590508161193b565b5f6001600160e01b03821115611925576040516306dfcc6560e41b815260e06004820152602481018390526044016108c9565b5f5f5f61258a85611fe4565b9050835f036125a6576001600160e01b031691508190506125f1565b5f6125b08561254b565b90506125d06125be426118f5565b6125c88385613417565b889190611929565b508290506125de8282613417565b6001600160e01b03918216955016925050505b9250929050565b5f5b8183101561264b575f61260d8484612986565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561263757809250612645565b61264281600161330e565b93505b506125fa565b509392505050565b5f8281526001840160205260408120819061266e90846129a0565b9050610b2c816001600160e01b0316611d74565b5f61268c82421190565b6126a9576040516334dcb7d760e21b815260040160405180910390fd5b6120906126b5836118f5565b84906129a0565b5f806126c785611fe4565b9050806001600160e01b0316846001600160e01b03161061270e57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016108c9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b039094169390930292909217905561277d600183613485565b90505f612789426118f5565b9050856001600160e01b0316826001600160e01b031614612886576001600160e01b0382165f90815260018801602052604081206127ca906111c290611fe4565b905060405180604001604052806001151581526020016127f2896001600160e01b031661254b565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b0319909416939093179290921790556128829083906128629061254b565b6001600160e01b038a165f90815260018c01602052604090209190611929565b5050505b6001600160e01b0382165f90815260018801602052604081206128aa918390611929565b50506128ca816128c2846001600160e01b031661254b565b899190611929565b50600198975050505050505050565b5f5f5f6128e585611fe4565b9050835f03612901576001600160e01b031691508190506125f1565b5f61290b8561254b565b90503382826001600160e01b03808216908316101561295f5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016108c9565b50505061297861296e426118f5565b6125c88385613485565b508290506125de8282613485565b5f61299460028484186134b8565b6106d39084841661330e565b81545f90818160058111156129fa575f6129b984612a41565b6129c39085613321565b5f8881526020902090915081015463ffffffff90811690871610156129ea578091506129f8565b6129f581600161330e565b92505b505b5f612a07878785856125f8565b90508015612a3457612a1e87611d47600184613321565b54600160201b90046001600160e01b0316612a36565b5f5b979650505050505050565b5f60018211612a4e575090565b816001600160801b8210612a675760809190911c9060401b5b600160401b8210612a7d5760409190911c9060201b5b600160201b8210612a935760209190911c9060101b5b620100008210612aa85760109190911c9060081b5b6101008210612abc5760089190911c9060041b5b60108210612acf5760049190911c9060021b5b60048210612adb5760011b5b600302600190811c90818581612af357612af36134a4565b048201901c90506001818581612b0b57612b0b6134a4565b048201901c90506001818581612b2357612b236134a4565b048201901c90506001818581612b3b57612b3b6134a4565b048201901c90506001818581612b5357612b536134a4565b048201901c90506001818581612b6b57612b6b6134a4565b048201901c9050612b8a818581612b8457612b846134a4565b04821190565b90039392505050565b6001600160a01b03811681146113d6575f5ffd5b5f5f60408385031215612bb8575f5ffd5b8235612bc381612b93565b91506020830135612bd381612b93565b809150509250929050565b6001600160a01b0391909116815260200190565b5f60208284031215612c02575f5ffd5b5035919050565b5f60208284031215612c19575f5ffd5b81356001600160401b03811681146106d3575f5ffd5b5f60208284031215612c3f575f5ffd5b81356106d381612b93565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612c8057612c80612c4a565b60405290565b604051608081016001600160401b0381118282101715612c8057612c80612c4a565b60405161010081016001600160401b0381118282101715612c8057612c80612c4a565b60405160c081016001600160401b0381118282101715612c8057612c80612c4a565b60405160e081016001600160401b0381118282101715612c8057612c80612c4a565b604051601f8201601f191681016001600160401b0381118282101715612d3757612d37612c4a565b604052919050565b5f60408284031215612d4f575f5ffd5b612d57612c5e565b823581526020928301359281019290925250919050565b5f60408284031215612d7e575f5ffd5b6106d38383612d3f565b8151815260208083015190820152604081016106d6565b5f5f5f60608486031215612db1575f5ffd5b8335612dbc81612b93565b92506020840135612dcc81612b93565b91506040840135612ddc81612b93565b809150509250925092565b5f6001600160401b03821115612dff57612dff612c4a565b5060051b60200190565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b8201601f81018413612e3e575f5ffd5b8035612e51612e4c82612de7565b612d0f565b8082825260208201915060208360051b850101925086831115612e72575f5ffd5b6020840193505b82841015611392578335612e8c81612b93565b825260209384019390910190612e79565b602080825282518282018190525f918401906040840190835b81811015612ee957612ed383855180518252602090810151910152565b6020939093019260409290920191600101612eb6565b509095945050505050565b80151581146113d6575f5ffd5b8035612f0c81612ef4565b919050565b5f5f5f60608486031215612f23575f5ffd5b83359250602084013591506040840135612ddc81612ef4565b5f5f60408385031215612f4d575f5ffd5b8235612f5881612b93565b946020939093013593505050565b5f5f5f5f5f5f868803610160811215612f7d575f5ffd5b8735612f8881612b93565b96506020880135612f9881612b93565b9550612fa78960408a01612d3f565b94506080607f1982011215612fba575f5ffd5b50612fc3612c86565b6080880135815260a0880135602082015260c0880135604082015260e088013560608201529250612ff8886101008901612d3f565b91506130076101408801612f01565b90509295509295509295565b5f5f5f60608486031215613025575f5ffd5b833561303081612b93565b92506020840135915060408401356001600160401b03811115613051575f5ffd5b8401601f81018613613061575f5ffd5b803561306f612e4c82612de7565b8082825260208201915060208360051b850101925088831115613090575f5ffd5b6020840193505b828410156130b2578335825260209384019390910190613097565b809450505050509250925092565b602080825282518282018190525f918401906040840190835b81811015612ee95783516001600160a01b03168352602093840193909201916001016130d9565b5f5f5f60608486031215613112575f5ffd5b833561311d81612b93565b95602085013595506040909401359392505050565b8051612f0c81612b93565b5f608082840312801561314e575f5ffd5b50613157612c86565b8251815260208084015190820152604083015161317381612b93565b6040820152606083015161318681612ef4565b60608201529392505050565b5f604082840312156131a2575f5ffd5b6131aa612c5e565b825181526020928301519281019290925250919050565b5f604082840312156131d1575f5ffd5b6106d38383613192565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015613208575f5ffd5b50613211612ca8565b604082121561321e575f5ffd5b613226612c5e565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f602082840312156132c4575f5ffd5b81516106d381612ef4565b5f602082840312156132df575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106d6576106d66132fa565b818103818111156106d6576106d66132fa565b805160098110612f0c575f5ffd5b5f8183036101a081128015613355575f5ffd5b5061335e612ccb565b60e082121561336b575f5ffd5b613373612ced565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c0808601519082015280825291506133c460e08501613334565b60208201526133d66101008501613132565b60408201526133e86101208501613132565b606082015261014084015160808201819052915061340a856101608601613192565b60a0820152949350505050565b6001600160e01b0381811683821601908111156106d6576106d66132fa565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526111f060c083018480518252602090810151910152565b6001600160e01b0382811682821603908111156106d6576106d66132fa565b634e487b7160e01b5f52601260045260245ffd5b5f826134d257634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a845cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c517a26469706673582212201c1bc70b2c18d993948a0f411b54e0c32944012c3e0f9eaa345a786cad82096864736f6c634300081e00336080604052348015600e575f5ffd5b50610a408061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80633f78271d14610038578063e98bc44414610060575b5f5ffd5b61004b61004636600461088b565b61008e565b60405190151581526020015b60405180910390f35b61007361006e36600461092f565b6100a2565b60408051825181526020928301519281019290925201610057565b5f61009a8484846100c4565b949350505050565b604080518082019091525f80825260208201526100be826101e4565b92915050565b5f6100ce84610256565b156100ec5760405163204cab4d60e21b815260040160405180910390fd5b6100f58361026b565b156101135760405163204cab4d60e21b815260040160405180910390fd5b61011c82610256565b1561013a5760405163204cab4d60e21b815260040160405180910390fd5b5f610144856101e4565b90505f61015286868661029c565b9050805f0361017457604051631262b41360e01b815260040160405180910390fd5b5f61018885610183898561033c565b6103a3565b90505f6101c3846101836101bd6040805180820182525f80825260209182015281518083019092526001825260029082015290565b8661033c565b90506101d8826101d161040e565b838a6104db565b98975050505050505050565b604080518082019091525f80825260208201525f825f0151836020015160405160200161021b929190918252602082015260400190565b604051602081830303815290604052905061024f75415a5445435f424c535f504f505f424e3235345f563160501b82610598565b9392505050565b80515f901580156100be575050602001511590565b80515f9015801561027e57506020820151155b801561028c57506040820151155b80156100be575050606001511590565b82516020808501518451858301516040808801516060808a015189518a8901518551808b019b909b528a86019890985291890195909552608088019390935260a087015260c086019290925260e0850152610100808501929092528051808503909201825261012090930190925281519101205f9061009a907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190610949565b604080518082019091525f80825260208201526103576107b9565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa90508061039b57604051635d90883360e11b815260040160405180910390fd5b505092915050565b604080518082019091525f80825260208201526103be6107d7565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa90508061039b57604051635d3761b560e11b815260040160405180910390fd5b61043560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec815250905090565b5f6104e46107f5565b85518152602080870151818301528581015160408084019190915286516060808501919091528088015160808501528188015160a0850152865160c08501528683015160e085015291850151610100840152845161012084015290840151610140830152830151610160820152610559610814565b5f6020826101808560086107d05a03fa9050806105895760405163a158f26960e01b815260040160405180910390fd5b50516001149695505050505050565b604080518082019091525f80825260208201525f805b5f8585836040516020016105c493929190610968565b60408051601f1981840301815291905280516020909101209050816105e8816109bf565b9250505f5160206109eb5f395f51905f52811061060557506105ae565b5f5f5160206109eb5f395f51905f5282830990505f5160206109eb5f395f51905f5282820990505f5160206109eb5f395f51905f5260038208905061064981610716565b9450905083156106f157805f61066c825f5160206109eb5f395f51905f526109d7565b90508082111561067857905b5f89895f1960405160200161068f93929190610968565b604051602081830303815290604052805190602001205f1c9050806001165f036106cf5760405180604001604052808681526020018481525097506106e7565b60405180604001604052808681526020018381525097505b50505050506106f8565b50506105ae565b8161039b57604051633d7f3d1d60e21b815260040160405180910390fd5b5f5f5f60405160208152602080820152602060408201528460608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206109eb5f395f51905f5260a082015260208160c08360056107d05a03fa9051935090505f5160206109eb5f395f51905f5283800984149150806107b357604051634ccc085960e11b815260040160405180910390fd5b50915091565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5f60408284031215610842575f5ffd5b6040805190810167ffffffffffffffff8111828210171561087157634e487b7160e01b5f52604160045260245ffd5b604052823581526020928301359281019290925250919050565b5f5f5f83850361010081121561089f575f5ffd5b6108a98686610832565b93506080603f19820112156108bc575f5ffd5b506040516080810167ffffffffffffffff811182821017156108ec57634e487b7160e01b5f52604160045260245ffd5b6040908152858101358252606080870135602084015260808701359183019190915260a08601359082015291506109268560c08601610832565b90509250925092565b5f6040828403121561093f575f5ffd5b61024f8383610832565b5f8261096357634e487b7160e01b5f52601260045260245ffd5b500690565b838152606060208201525f83518060608401528060208601608085015e5f608082850101526080601f19601f830116840101915050826040830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b5f600182016109d0576109d06109ab565b5060010190565b818103818111156100be576100be6109ab56fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220de9df0f3403cc6ba88f84cc9c26bae092407e794597e756c9f14d996d3fccc6364736f6c634300081e0033","sourceMap":"31792:8139:131:-:0;;;9872:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9817:76:131;;;11696:49;;;-1:-1:-1;;;;;;;;11696:49:131;-1:-1:-1;;;11696:49:131;;;32052:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32166:7;32175:6;32183:20;32205:18;32166:7;-1:-1:-1;;;;;1273:26:35;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:35;;1350:1;1322:31;;;929:51:185;902:18;;1322:31:35;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;12815:14:131;;::::1;;::::0;12835:43:::1;::::0;12884:39:::1;::::0;-1:-1:-1;;12929:33:131;::::1;::::0;-1:-1:-1;;12929:9:131::1;-1:-1:-1::0;12929:33:131;-1:-1:-1;12929:40:131;:47;;-1:-1:-1;;12929:47:131::1;12972:4;12929:47;::::0;;31792:8139;;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;31792:8139:131:-;;;;;;;;:::o;14:131:185:-;-1:-1:-1;;;;;89:31:185;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:628::-;263:6;271;279;287;340:3;328:9;319:7;315:23;311:33;308:53;;;357:1;354;347:12;308:53;389:9;383:16;408:31;433:5;408:31;:::i;:::-;508:2;493:18;;487:25;458:5;;-1:-1:-1;521:33:185;487:25;521:33;:::i;:::-;646:2;631:18;;625:25;742:2;727:18;;;721:25;150:628;;573:7;;-1:-1:-1;150:628:185;-1:-1:-1;;;150:628:185:o;783:203::-;31792:8139:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061023e575f3560e01c80636a91551611610135578063bb4d4436116100b4578063ec6e69db11610079578063ec6e69db1461062d578063f2fde38b14610640578063f3fef3a314610653578063f7888aec14610681578063f852fef914610694575f5ffd5b8063bb4d443614610525578063d3da927f14610538578063dbc857521461054b578063e48a5f7b14610572578063eaeded5f1461061a575f5ffd5b80639f6bc70c116100fa5780639f6bc70c146104bd578063a9cd26c9146104d0578063ab033ea9146104e3578063b35186a8146104f6578063b4ac4536146104fe575f5ffd5b80636a9155161461045e578063710ca35414610471578063715018a6146104855780638da5cb5b1461048d5780639796d9771461049d575f5ffd5b80634800d97f116101c157806359264f001161018657806359264f00146103ff57806362400e4c14610412578063671431c3146104255780636902c67b146104385780636a18ff7a1461044b575f5ffd5b80634800d97f1461036d5780634bd96ece1461039457806352097e4e146103c657806352f44a14146103d95780635338c758146103ec575f5ffd5b806318160ddd1161020757806318160ddd14610309578063289b3c0d1461031f5780632e341ce01461032757806330eb4bdd1461033a5780633fd20fe11461034d575f5ffd5b806215eaaa146102425780630928d1521461026b5780630e9f7e43146102805780630f9f54101461029357806311d66fee146102e9575b5f5ffd5b610255610250366004612ba7565b6106c6565b6040516102629190612bde565b60405180910390f35b61027e610279366004612bf2565b6106dc565b005b61027e61028e366004612c09565b6107b1565b6102556102a1366004612c2f565b6001600160a01b039081165f90815260036020908152604091829020825160808101845281549381019384526001820154606082015292835260020154909216910181905290565b6102fc6102f7366004612d6e565b6107e6565b6040516102629190612d88565b610311610881565b604051908152602001610262565b610255610891565b61027e610335366004612d9f565b6108a0565b610311610348366004612ba7565b61092a565b61036061035b366004612e09565b610b35565b6040516102629190612e9d565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6103b66103a2366004612bf2565b60046020525f908152604090205460ff1681565b6040519015158152602001610262565b61027e6103d4366004612f11565b610c2b565b6103b66103e7366004612c2f565b610c85565b6103116103fa366004612ba7565b610ca5565b61027e61040d366004612c2f565b610d01565b610311610420366004612c2f565b610dba565b610311610433366004612f3c565b610dc6565b61027e610446366004612f66565b610dd3565b61027e610459366004612f11565b61119e565b61025561046c366004612bf2565b6111aa565b6102555f5160206134d85f395f51905f5281565b61027e6111d0565b5f546001600160a01b0316610255565b6104b06104ab366004613013565b6111e3565b60405161026291906130c0565b5f5160206134d85f395f51905f52610255565b6102556104de366004613100565b6111f8565b61027e6104f1366004612c2f565b611269565b6102556112bc565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b610311610533366004612c2f565b6112ca565b6103b6610546366004612ba7565b6112d6565b6103117f000000000000000000000000000000000000000000000000000000000000000081565b6105ed610580366004612c2f565b604080516080810182525f9181018281526060820183905281526020810191909152506001600160a01b039081165f908152600360209081526040918290208251608081018452815493810193845260018201546060820152928352600201549092169181019190915290565b6040805182518051825260209081015181830152909201516001600160a01b031690820152606001610262565b610311610628366004612f3c565b6112f7565b61031161063b366004612f3c565b611304565b61027e61064e366004612c2f565b61139c565b610666610661366004612f3c565b6113d9565b60408051938452911515602084015290820152606001610262565b61031161068f366004612ba7565b611620565b6008546106ae90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610262565b5f6106d36005848461162d565b90505b92915050565b5f6106e5610891565b604051634527d8b560e11b8152600481018490529091506001600160a01b03821690638a4fb16a90602401608060405180830381865afa15801561072b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f919061313d565b606001516107ad5760405163049468a960e11b8152600481018390526001600160a01b03821690630928d152906024015f604051808303815f87803b158015610796575f5ffd5b505af11580156107a8573d5f5f3e3d5ffd5b505050505b5050565b6107b961165a565b600880546001600160401b03909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b6040805180820182525f80825260208201529051633a62f11160e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e98bc44490610843908590600401612d88565b6040805180830381865afa15801561085d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d691906131c1565b5f61088c6005611686565b905090565b6008546001600160a01b031690565b6108a983610c85565b83906108d2576040516330d32d8760e21b81526004016108c99190612bde565b60405180910390fd5b506001600160a01b038083165f9081526003602052604090206002015416803380821461091457604051630257d8d760e41b81526004016108c99291906131db565b5061092490506005858585611693565b50505050565b5f5f610934610891565b90505f816001600160a01b0316636bd50cef6040518163ffffffff1660e01b815260040161012060405180830381865afa158015610974573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099891906131f5565b516020015190506109d46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611753565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610a22908590859060040161329b565b6020604051808303815f875af1158015610a3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6291906132b4565b506040516311f9fbc960e21b81526001600160a01b038316906347e7ef2490610a91903090859060040161329b565b5f604051808303815f87803b158015610aa8575f5ffd5b505af1158015610aba573d5f5f3e3d5ffd5b50506040516330eb4bdd60e01b81526001600160a01b03851692506330eb4bdd9150610aec90889088906004016131db565b6020604051808303815f875af1158015610b08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2c91906132cf565b95945050505050565b60605f82516001600160401b03811115610b5157610b51612c4a565b604051908082528060200260200182016040528015610b9557816020015b604080518082019091525f8082526020820152815260200190600190039081610b6f5790505b5090505f5b8351811015610c245760035f858381518110610bb857610bb86132e6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f016040518060400160405290815f8201548152602001600182015481525050828281518110610c1157610c116132e6565b6020908102919091010152600101610b9a565b5092915050565b5f610c35846117ad565b9050610c40816111aa565b33906001600160a01b03168114610c6b576040516305df8ea560e31b81526004016108c99190612bde565b506109245f5160206134d85f395f51905f5285858561183f565b6001600160a01b03165f9081526002602052604090206003015460ff1690565b5f80610cb3600585856118ce565b905080158015610cdb5750836001600160a01b0316610cd06112bc565b6001600160a01b0316145b156106d357610cf960055f5160206134d85f395f51905f52856118ce565b9150506106d6565b610d0961165a565b806001600160a01b038116610d32576040516327bac29760e21b81526004016108c99190612bde565b506001600160a01b0381165f90815260026020526040902060030154819060ff1615610d715760405162cea8b160e11b81526004016108c99190612bde565b506001600160a01b0381165f908152600260205260409020600301805460ff19166001179055610db5610da3426118f5565b6001906001600160a01b038416611929565b505050565b5f6106d6600583611943565b5f6106d360058484611966565b610ddc33610c85565b3390610dfc576040516319aaa75960e11b81526004016108c99190612bde565b505f33610e076112bc565b6001600160a01b03161490508115610e3b573381610e39576040516305df8ea560e31b81526004016108c99190612bde565b505b610e4533886112d6565b1533889091610e6957604051630d75cd7760e11b81526004016108c99291906131db565b50508015610ebc57610e885f5160206134d85f395f51905f52886112d6565b5f5160206134d85f395f51905f5290889015610eb957604051630d75cd7760e11b81526004016108c99291906131db565b50505b5f82610ec85733610ed7565b5f5160206134d85f395f51905f525b6001600160a01b0381165f908152600260205260409020909150610efb9089611992565b81899091610f1e57604051630d75cd7760e11b81526004016108c99291906131db565b5050610f2c88878787611acc565b6040805180820182528781526001600160a01b0389811660208084019182528c83165f90815260038252949094209251805184559093015160018301559151600290910180546001600160a01b03191691909216179055610f906005828a81611693565b610fbd6005828a7f0000000000000000000000000000000000000000000000000000000000000000611c90565b6110126001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633307f0000000000000000000000000000000000000000000000000000000000000000611753565b5f61101b610891565b60405163095ea7b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061108c9084907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b6020604051808303815f875af11580156110a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110cc91906132b4565b506040516311f9fbc960e21b81526001600160a01b038216906347e7ef249061111b9030907f00000000000000000000000000000000000000000000000000000000000000009060040161329b565b5f604051808303815f87803b158015611132575f5ffd5b505af1158015611144573d5f5f3e3d5ffd5b50505050886001600160a01b0316826001600160a01b03167f7986a8ff398d9a6be88df9dfc6e3c9a83e4da5544241aad420d1cf7c214e43458a60405161118b9190612bde565b60405180910390a3505050505050505050565b610db53384848461183f565b5f6106d66111c26111ba846118f5565b600190611d1f565b6001600160e01b0316611d74565b6111d861165a565b6111e15f611da7565b565b60606111f0848385611df6565b949350505050565b6040805160018082528183019092525f918291906020808301908036833701905050905083815f8151811061122f5761122f6132e6565b602002602001018181525050611246858285611df6565b5f81518110611257576112576132e6565b60200260200101519150509392505050565b61127161165a565b6008546001600160a01b03161561129a576040516296bb9f60e21b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f61088c6111c26001611fe4565b5f6106d660058361201b565b6001600160a01b0382165f9081526002602052604081206106d3908361203f565b5f6106d360058484612060565b6001600160a01b0382165f90815260026020526040812081611325846118f5565b90505f6113328383612085565b9050856001600160a01b0316611347866111aa565b6001600160a01b031603610b2c57739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526113885f5160206134f85f395f51905f5283612085565b611392908261330e565b9695505050505050565b6113a461165a565b6001600160a01b0381166113cd575f604051631e4fbdf760e01b81526004016108c99190612bde565b6113d681611da7565b50565b5f5f5f6113e533610c85565b3390611405576040516319aaa75960e11b81526004016108c99190612bde565b50335f8181526002602052604081209061141f828961203f565b90508015801561143e5750336114336112bc565b6001600160a01b0316145b80156114785750739064fb41156d300196d5eb95e0b3c1f08ebc39a85f5260026020526114785f5160206134f85f395f51905f528961203f565b156114bb575050739064fb41156d300196d5eb95e0b3c1f08ebc39a85f525060026020525f5160206134d85f395f51905f525f5160206134f85f395f51905f5260015b87816114db5760405163417f3a0560e01b81526004016108c99190612bde565b505f6114e96005858b6118ce565b905080888082101561151757604051635087517f60e11b8152600481019290925260248201526044016108c9565b508890505f7f00000000000000000000000000000000000000000000000000000000000000006115478385613321565b109050801561158a5761155a858c6120a0565b8b9061157a576040516304ca9e7360e31b81526004016108c99190612bde565b5082915061158a6005878d612101565b6115976005878d8561210d565b5f6115a0610891565b6001600160a01b031663c4bf093633856040518363ffffffff1660e01b81526004016115cd92919061329b565b6020604051808303815f875af11580156115e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160d91906132cf565b929c919b50919950975050505050505050565b5f6106d3600584846118ce565b6001600160a01b039182165f90815260209384526040808220928416825291909352909120600101541690565b5f546001600160a01b031633146111e1573360405163118cdaa760e01b81526004016108c99190612bde565b5f6106d682600201612194565b5f61169f85858561162d565b9050816001600160a01b0316816001600160a01b0316036116c05750610924565b6001600160a01b038481165f9081526020878152604080832087851680855292529182902060010180546001600160a01b03191693861693909317909255517f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9061172e90849086906131db565b60405180910390a261174c8582846117478989896118ce565b6121ad565b5050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526109249085906122e6565b5f5f6117b7610891565b6001600160a01b031663c7f758a8846040518263ffffffff1660e01b81526004016117e491815260200190565b6101a060405180830381865afa158015611800573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118249190613342565b608081015181515191925061183891612349565b9392505050565b5f611849846117ad565b9050611859600586868487612354565b611861610891565b60405163350c7fbd60e11b8152600481018690526024810185905283151560448201526001600160a01b039190911690636a18ff7a906064015f604051808303815f87803b1580156118b1575f5ffd5b505af11580156118c3573d5f5f3e3d5ffd5b505050505050505050565b6001600160a01b039182165f90815260209384526040808220929093168152925290205490565b5f63ffffffff821115611925576040516306dfcc6560e41b815260206004820152602481018390526044016108c9565b5090565b5f80611936858585612407565b915091505b935093915050565b6001600160a01b0381165f9081526020839052604081206106d390600101612194565b6001600160a01b0382165f90815260018401602090815260408083208484529091529020549392505050565b5f6001600160a01b0382166119b95760405162979f6d60e11b815260040160405180910390fd5b6001600160a01b0382165f90815260028401602052604090205460ff16156119e257505f6106d6565b5f6119ec84611fe4565b604080518082018252600181526001600160e01b0383811660208084019182526001600160a01b0389165f90815260028b019091529384209251835491516001600160e81b0319909216901515610100600160e81b031916176101009190921602179055909150611a5c426118f5565b9050611a9481611a74866001600160a01b031661254b565b6001600160e01b0385165f90815260018901602052604090209190611929565b50611abf905081611ab7611aa9856001613417565b6001600160e01b031661254b565b879190611929565b5060019695505050505050565b6001600160a01b0384165f908152600360209081526040918290208251808401909352805480845260019091015491830191909152158015611b1057506020810151155b815160208301519091611b3f576040516312d6323b60e11b8152600481019290925260248201526044016108c9565b50505f845f01518560200151604051602001611b65929190918252602082015260400190565b60408051601f1981840301815291815281516020928301205f8181526004909352912054909150819060ff1615611bb257604051636ab4baeb60e11b81526004016108c991815260200190565b505f818152600460208190526040918290208054600160ff199091161790556008549151633f78271d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692633f78271d92600160a01b9091046001600160401b031691611c33918a918a918a9101613436565b6020604051808303818786fa158015611c4e573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c7391906132b4565b6107a85760405163df4ff27b60e01b815260040160405180910390fd5b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290611cca90849061330e565b90915550506001600160a01b038084165f90815260208390526040812060010154611cf99288929116856121ad565b611d06600182018361257e565b50611d169050600286018361257e565b50505050505050565b81545f9081611d30858583856125f8565b90508015611d6a57611d5485611d47600184613321565b5f91825260209091200190565b54600160201b90046001600160e01b0316610b2c565b505f949350505050565b5f6001600160a01b03821115611925576040516306dfcc6560e41b815260a06004820152602481018390526044016108c9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f83516001600160401b03811115611e1257611e12612c4a565b604051908082528060200260200182016040528015611e3b578160200160208202803683370190505b506001600160a01b0386165f818152600260205260408120739064fb41156d300196d5eb95e0b3c1f08ebc39a882529293505f5160206134f85f395f51905f5291611e85876111aa565b6001600160a01b03161490505f611e9b876118f5565b90505f611ea88583612085565b90505f83611eb6575f611ec0565b611ec08584612085565b90505f611ecd828461330e565b90505f5b8b51811015611fd3575f8c8281518110611eed57611eed6132e6565b6020026020010151905082811081849091611f2457604051635d4bf88360e01b8152600481019290925260248201526044016108c9565b505084811015611f7057611f39898288612653565b8a8381518110611f4b57611f4b6132e6565b60200260200101906001600160a01b031690816001600160a01b031681525050611fca565b8615611f8b57611f39611f838683613321565b899088612653565b604051633d6a4a3b60e21b815260206004820152601360248201527229a427aaa622102722ab22a9102420a82822a760691b60448201526064016108c9565b50600101611ed1565b50969b9a5050505050505050505050565b80545f90801561201357611ffd83611d47600184613321565b54600160201b90046001600160e01b0316611838565b5f9392505050565b6001600160a01b0381165f9081526001808401602052604082206106d39101612194565b6001600160a01b03165f908152600291909101602052604090205460ff1690565b6001600160a01b0382165f9081526001808501602052604082206111f0910183612682565b5f6120908383611d1f565b6001600160e01b03169392505050565b6001600160a01b0381165f908152600283016020908152604080832081518083019092525460ff811615158083526101009091046001600160e01b031692820192909252906120f2575f9150506106d6565b6111f0848260200151856126bc565b610db58383835f611693565b8015610924576001600160a01b038084165f9081526020868152604080832093861683529083905281208054849290612147908490613321565b90915550506001600160a01b038084165f90815260208390526040812060010154612177928892911690856121ad565b61218460018201836128d9565b50611d16905060028601836128d9565b5f61219e82611fe4565b6001600160e01b031692915050565b816001600160a01b0316836001600160a01b031614806121cb575080155b610924576001600160a01b03831615612258576001600160a01b0383165f90815260018086016020526040822082916122059101846128d9565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161224d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610924576001600160a01b0382165f908152600180860160205260408220829161228e91018461257e565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516122d6929190918252602082015260400190565b60405180910390a2505050505050565b5f5f60205f8451602086015f885af180612305576040513d5f823e3d81fd5b50505f513d9150811561231c578060011415612329565b6001600160a01b0384163b155b156109245783604051635274afe760e01b81526004016108c99190612bde565b5f6106d3828461330e565b5f612360868685612060565b90505f61236e878787611966565b905061237a838261330e565b8210158683612389868561330e565b9091926123c25760405163dd99c2ab60e01b81526001600160a01b039093166004840152602483019190915260448201526064016108c9565b5050506001600160a01b0386165f9081526001880160209081526040808320888452909152812080548592906123f990849061330e565b909155505050505050505050565b82545f90819080156124f3575f61242387611d47600185613321565b805490915063ffffffff80821691600160201b90046001600160e01b031690881682111561246457604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff160361249757825463ffffffff16600160201b6001600160e01b038916021783556124e5565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061193b92505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b02919093161792019190915590508161193b565b5f6001600160e01b03821115611925576040516306dfcc6560e41b815260e06004820152602481018390526044016108c9565b5f5f5f61258a85611fe4565b9050835f036125a6576001600160e01b031691508190506125f1565b5f6125b08561254b565b90506125d06125be426118f5565b6125c88385613417565b889190611929565b508290506125de8282613417565b6001600160e01b03918216955016925050505b9250929050565b5f5b8183101561264b575f61260d8484612986565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561263757809250612645565b61264281600161330e565b93505b506125fa565b509392505050565b5f8281526001840160205260408120819061266e90846129a0565b9050610b2c816001600160e01b0316611d74565b5f61268c82421190565b6126a9576040516334dcb7d760e21b815260040160405180910390fd5b6120906126b5836118f5565b84906129a0565b5f806126c785611fe4565b9050806001600160e01b0316846001600160e01b03161061270e57604051636bc4db8d60e11b81526001600160e01b038086166004830152821660248201526044016108c9565b6040805180820182525f80825260208083018281526001600160a01b038816835260028a019091529281209151825493516001600160e81b0319909416901515610100600160e81b031916176101006001600160e01b039094169390930292909217905561277d600183613485565b90505f612789426118f5565b9050856001600160e01b0316826001600160e01b031614612886576001600160e01b0382165f90815260018801602052604081206127ca906111c290611fe4565b905060405180604001604052806001151581526020016127f2896001600160e01b031661254b565b6001600160e01b039081169091526001600160a01b0383165f81815260028c016020908152604090912084518154959092015190931661010002610100600160e81b0319911515919091166001600160e81b0319909416939093179290921790556128829083906128629061254b565b6001600160e01b038a165f90815260018c01602052604090209190611929565b5050505b6001600160e01b0382165f90815260018801602052604081206128aa918390611929565b50506128ca816128c2846001600160e01b031661254b565b899190611929565b50600198975050505050505050565b5f5f5f6128e585611fe4565b9050835f03612901576001600160e01b031691508190506125f1565b5f61290b8561254b565b90503382826001600160e01b03808216908316101561295f5760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b0391821660248401521660448201526064016108c9565b50505061297861296e426118f5565b6125c88385613485565b508290506125de8282613485565b5f61299460028484186134b8565b6106d39084841661330e565b81545f90818160058111156129fa575f6129b984612a41565b6129c39085613321565b5f8881526020902090915081015463ffffffff90811690871610156129ea578091506129f8565b6129f581600161330e565b92505b505b5f612a07878785856125f8565b90508015612a3457612a1e87611d47600184613321565b54600160201b90046001600160e01b0316612a36565b5f5b979650505050505050565b5f60018211612a4e575090565b816001600160801b8210612a675760809190911c9060401b5b600160401b8210612a7d5760409190911c9060201b5b600160201b8210612a935760209190911c9060101b5b620100008210612aa85760109190911c9060081b5b6101008210612abc5760089190911c9060041b5b60108210612acf5760049190911c9060021b5b60048210612adb5760011b5b600302600190811c90818581612af357612af36134a4565b048201901c90506001818581612b0b57612b0b6134a4565b048201901c90506001818581612b2357612b236134a4565b048201901c90506001818581612b3b57612b3b6134a4565b048201901c90506001818581612b5357612b536134a4565b048201901c90506001818581612b6b57612b6b6134a4565b048201901c9050612b8a818581612b8457612b846134a4565b04821190565b90039392505050565b6001600160a01b03811681146113d6575f5ffd5b5f5f60408385031215612bb8575f5ffd5b8235612bc381612b93565b91506020830135612bd381612b93565b809150509250929050565b6001600160a01b0391909116815260200190565b5f60208284031215612c02575f5ffd5b5035919050565b5f60208284031215612c19575f5ffd5b81356001600160401b03811681146106d3575f5ffd5b5f60208284031215612c3f575f5ffd5b81356106d381612b93565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715612c8057612c80612c4a565b60405290565b604051608081016001600160401b0381118282101715612c8057612c80612c4a565b60405161010081016001600160401b0381118282101715612c8057612c80612c4a565b60405160c081016001600160401b0381118282101715612c8057612c80612c4a565b60405160e081016001600160401b0381118282101715612c8057612c80612c4a565b604051601f8201601f191681016001600160401b0381118282101715612d3757612d37612c4a565b604052919050565b5f60408284031215612d4f575f5ffd5b612d57612c5e565b823581526020928301359281019290925250919050565b5f60408284031215612d7e575f5ffd5b6106d38383612d3f565b8151815260208083015190820152604081016106d6565b5f5f5f60608486031215612db1575f5ffd5b8335612dbc81612b93565b92506020840135612dcc81612b93565b91506040840135612ddc81612b93565b809150509250925092565b5f6001600160401b03821115612dff57612dff612c4a565b5060051b60200190565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b8201601f81018413612e3e575f5ffd5b8035612e51612e4c82612de7565b612d0f565b8082825260208201915060208360051b850101925086831115612e72575f5ffd5b6020840193505b82841015611392578335612e8c81612b93565b825260209384019390910190612e79565b602080825282518282018190525f918401906040840190835b81811015612ee957612ed383855180518252602090810151910152565b6020939093019260409290920191600101612eb6565b509095945050505050565b80151581146113d6575f5ffd5b8035612f0c81612ef4565b919050565b5f5f5f60608486031215612f23575f5ffd5b83359250602084013591506040840135612ddc81612ef4565b5f5f60408385031215612f4d575f5ffd5b8235612f5881612b93565b946020939093013593505050565b5f5f5f5f5f5f868803610160811215612f7d575f5ffd5b8735612f8881612b93565b96506020880135612f9881612b93565b9550612fa78960408a01612d3f565b94506080607f1982011215612fba575f5ffd5b50612fc3612c86565b6080880135815260a0880135602082015260c0880135604082015260e088013560608201529250612ff8886101008901612d3f565b91506130076101408801612f01565b90509295509295509295565b5f5f5f60608486031215613025575f5ffd5b833561303081612b93565b92506020840135915060408401356001600160401b03811115613051575f5ffd5b8401601f81018613613061575f5ffd5b803561306f612e4c82612de7565b8082825260208201915060208360051b850101925088831115613090575f5ffd5b6020840193505b828410156130b2578335825260209384019390910190613097565b809450505050509250925092565b602080825282518282018190525f918401906040840190835b81811015612ee95783516001600160a01b03168352602093840193909201916001016130d9565b5f5f5f60608486031215613112575f5ffd5b833561311d81612b93565b95602085013595506040909401359392505050565b8051612f0c81612b93565b5f608082840312801561314e575f5ffd5b50613157612c86565b8251815260208084015190820152604083015161317381612b93565b6040820152606083015161318681612ef4565b60608201529392505050565b5f604082840312156131a2575f5ffd5b6131aa612c5e565b825181526020928301519281019290925250919050565b5f604082840312156131d1575f5ffd5b6106d38383613192565b6001600160a01b0392831681529116602082015260400190565b5f81830361012081128015613208575f5ffd5b50613211612ca8565b604082121561321e575f5ffd5b613226612c5e565b845181526020808601518183015290825260408086015191830191909152606080860151918301919091526080808601519183019190915260a0808601519183019190915260c0808601519183019190915260e080860151918301919091526101009094015193810193909352509092915050565b6001600160a01b03929092168252602082015260400190565b5f602082840312156132c4575f5ffd5b81516106d381612ef4565b5f602082840312156132df575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106d6576106d66132fa565b818103818111156106d6576106d66132fa565b805160098110612f0c575f5ffd5b5f8183036101a081128015613355575f5ffd5b5061335e612ccb565b60e082121561336b575f5ffd5b613373612ced565b845181526020808601519082015260408086015190820152606080860151908201526080808601519082015260a0808601519082015260c0808601519082015280825291506133c460e08501613334565b60208201526133d66101008501613132565b60408201526133e86101208501613132565b606082015261014084015160808201819052915061340a856101608601613192565b60a0820152949350505050565b6001600160e01b0381811683821601908111156106d6576106d66132fa565b83518152602080850151908201526101008101835160408301526020840151606083015260408401516080830152606084015160a08301526111f060c083018480518252602090810151910152565b6001600160e01b0382811682821603908111156106d6576106d66132fa565b634e487b7160e01b5f52601260045260245ffd5b5f826134d257634e487b7160e01b5f52601260045260245ffd5b50049056fe213a5ea1b59775ba625834509064fb41156d300196d5eb95e0b3c1f08ebc39a845cd5d767d29724415e078f0a4044a337b39cef8f25b5496e43151dbca56c517a26469706673582212201c1bc70b2c18d993948a0f411b54e0c32944012c3e0f9eaa345a786cad82096864736f6c634300081e0033","sourceMap":"31792:8139:131:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34473:170;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23479:222;;;;;;:::i;:::-;;:::i;:::-;;13193:176;;;;;;:::i;:::-;;:::i;32953:192::-;;;;;;:::i;:::-;-1:-1:-1;;;;;33090:19:131;;;33033:18;33090:19;;;:8;:19;;;;;;;;;33059:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32953:192;32634:175;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;34359:110::-;;;:::i;:::-;;;4409:25:185;;;4397:2;4382:18;34359:110:131;4263:177:185;29180:105:131;;;:::i;26171:404::-;;;;;;:::i;:::-;;:::i;24616:410::-;;;;;;:::i;:::-;;:::i;35325:337::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10349:29::-;;;;;10815:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8035:14:185;;8028:22;8010:41;;7998:2;7983:18;10815:63:131;7870:187:185;27583:316:131;;;;;;:::i;:::-;;:::i;27903:138::-;;;;;;:::i;:::-;;:::i;33872:344::-;;;;;;:::i;:::-;;:::i;14182:356::-;;;;;;:::i;:::-;;:::i;34220:135::-;;;;;;:::i;:::-;;:::i;35988:176::-;;;;;;:::i;:::-;;:::i;16518:2533::-;;;;;;:::i;:::-;;:::i;26987:155::-;;;;;;:::i;:::-;;:::i;28979:197::-;;;;;;:::i;:::-;;:::i;9633:103::-;;-1:-1:-1;;;;;;;;;;;9633:103:131;;2293:101:35;;;:::i;1638:85::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;1638:85;;34797:265:131;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;36168:122::-;-1:-1:-1;;;;;;;;;;;36168:122:131;;35666:318;;;;;;:::i;:::-;;:::i;12985:204::-;;;;;;:::i;:::-;;:::i;28618:131::-;;;:::i;9960:45::-;;;;;34647:146;;;;;;:::i;:::-;;:::i;28325:174::-;;;;;;:::i;:::-;;:::i;10172:43::-;;;;;32813:136;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32925:19:131;;;;;;;:8;:19;;;;;;;;;32918:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32813:136;;;;;13715:13:185;;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;;3950:47;13788:17;;;13782:24;-1:-1:-1;;;;;13778:50:185;13756:20;;;13749:80;13677:2;13662:18;32813:136:131;13477:358:185;36294:182:131;;;;;;:::i;:::-;;:::i;36834:507::-;;;;;;:::i;:::-;;:::i;2543:215:35:-;;;;;;:::i;:::-;;:::i;20097:2942:131:-;;;;;;:::i;:::-;;:::i;:::-;;;;14440:25:185;;;14508:14;;14501:22;14496:2;14481:18;;14474:50;14540:18;;;14533:34;14428:2;14413:18;20097:2942:131;14244:329:185;33149:167:131;;;;;;:::i;:::-;;:::i;11696:49::-;;;;;-1:-1:-1;;;11696:49:131;;-1:-1:-1;;;;;11696:49:131;;;;;;-1:-1:-1;;;;;14740:31:185;;;14722:50;;14710:2;14695:18;11696:49:131;14578:200:185;34473:170:131;34571:7;34593:45;:10;34617:9;34628;34593:23;:45::i;:::-;34586:52;;34473:170;;;;;:::o;23479:222::-;23562:14;23579:15;:13;:15::i;:::-;23605:32;;-1:-1:-1;;;23605:32:131;;;;;4409:25:185;;;23562:32:131;;-1:-1:-1;;;;;;23605:17:131;;;;;4382:18:185;;23605:32:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;23600:97;;23655:35;;-1:-1:-1;;;23655:35:131;;;;;4409:25:185;;;-1:-1:-1;;;;;23655:20:131;;;;;4382:18:185;;23655:35:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23600:97;23556:145;23479:222;:::o;13193:176::-;1531:13:35;:11;:13::i;:::-;13310:25:131::1;:54:::0;;-1:-1:-1;;;;;13310:54:131;;::::1;-1:-1:-1::0;;;13310:54:131::1;-1:-1:-1::0;;;;13310:54:131;;::::1;::::0;;;::::1;::::0;;13193:176::o;32634:175::-;-1:-1:-1;;;;;;;;;;;;;;;;32759:45:131;;-1:-1:-1;;;32759:45:131;;:17;-1:-1:-1;;;;;32759:33:131;;;;:45;;32793:10;;32759:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34359:110::-;34420:7;34442:22;:10;:20;:22::i;:::-;34435:29;;34359:110;:::o;29180:105::-;29270:10;;-1:-1:-1;;;;;29270:10:131;;29180:105::o;26171:404::-;26289:29;26308:9;26289:18;:29::i;:::-;26353:9;26281:83;;;;;-1:-1:-1;;;26281:83:131;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;26391:19:131;;;26370:18;26391:19;;;:8;:19;;;;;:30;;;;;26435:10;:24;;;26427:84;;;;-1:-1:-1;;;26427:84:131;;;;;;;;;:::i;:::-;-1:-1:-1;26517:53:131;;-1:-1:-1;26517:10:131;26537:9;26548;26559:10;26517:19;:53::i;:::-;26275:300;26171:404;;;:::o;24616:410::-;24710:7;24725:14;24742:15;:13;:15::i;:::-;24725:32;;24763:14;24780:3;-1:-1:-1;;;;;24780:20:131;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;:47;;;;-1:-1:-1;24834:57:131;-1:-1:-1;;;;;24834:5:131;:22;24857:10;24877:4;24780:47;24834:22;:57::i;:::-;24897:35;;-1:-1:-1;;;24897:35:131;;-1:-1:-1;;;;;24897:5:131;:13;;;;:35;;24919:3;;24925:6;;24897:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24939:34:131;;-1:-1:-1;;;24939:34:131;;-1:-1:-1;;;;;24939:11:131;;;;;:34;;24959:4;;24966:6;;24939:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24987:34:131;;-1:-1:-1;;;24987:34:131;;-1:-1:-1;;;;;24987:19:131;;;-1:-1:-1;24987:19:131;;-1:-1:-1;24987:34:131;;25007:8;;25017:3;;24987:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24980:41;24616:410;-1:-1:-1;;;;;24616:410:131:o;35325:337::-;35446:16;35472:21;35510:10;:17;-1:-1:-1;;;;;35496:32:131;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;35496:32:131;;;;;;;;;;;;;;;-1:-1:-1;35472:56:131;-1:-1:-1;35539:9:131;35534:106;35558:10;:17;35554:1;:21;35534:106;;;35600:8;:23;35609:10;35620:1;35609:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;35600:23:131;-1:-1:-1;;;;;35600:23:131;;;;;;;;;;;;:33;;35590:43;;;;;;;;;;;;;;;;;;;;;;;;;:4;35595:1;35590:7;;;;;;;;:::i;:::-;;;;;;;;;;:43;35577:3;;35534:106;;;-1:-1:-1;35653:4:131;35325:337;-1:-1:-1;;35325:337:131:o;27583:316::-;27693:12;27708:28;27724:11;27708:15;:28::i;:::-;27693:43;;27764:21;27782:2;27764:17;:21::i;:::-;27750:10;;-1:-1:-1;;;;;27750:35:131;;;27742:85;;;;-1:-1:-1;;;27742:85:131;;;;;;;;:::i;:::-;-1:-1:-1;27833:61:131;-1:-1:-1;;;;;;;;;;;27863:11:131;27876:7;27885:8;27833:5;:61::i;27903:138::-;-1:-1:-1;;;;;28009:20:131;27990:4;28009:20;;;:9;:20;;;;;:27;;;;;;27903:138::o;33872:344::-;33976:7;;34009:45;:10;34033:9;34044;34009:23;:45::i;:::-;33991:63;-1:-1:-1;34064:12:131;;:46;;;;;34101:9;-1:-1:-1;;;;;34080:30:131;:17;:15;:17::i;:::-;-1:-1:-1;;;;;34080:30:131;;34064:46;34060:132;;;34127:58;:10;-1:-1:-1;;;;;;;;;;;34175:9:131;34127:23;:58::i;:::-;34120:65;;;;;14182:356;1531:13:35;:11;:13::i;:::-;14270:7:131;-1:-1:-1;;;;;14270:21:131;::::1;14262:73;;;;-1:-1:-1::0;;;14262:73:131::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14350:18:131;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;::::0;14360:7;;14350:25:::1;;14349:26;14341:81;;;;-1:-1:-1::0;;;14341:81:131::1;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;14428:18:131;::::1;;::::0;;;:9:::1;:18;::::0;;;;:25:::1;;:32:::0;;-1:-1:-1;;14428:32:131::1;14456:4;14428:32;::::0;;14466:67:::1;14479:26;:15;:24;:26::i;:::-;14466:7;::::0;-1:-1:-1;;;;;14507:25:131;::::1;14466:12;:67::i;:::-;;;14182:356:::0;:::o;34220:135::-;34295:7;34317:33;:10;34340:9;34317:22;:33::i;35988:176::-;36089:7;36111:48;:10;36135;36147:11;36111:23;:48::i;16518:2533::-;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:131;;;;;;;;:::i;:::-;-1:-1:-1;16773:28:131::1;16825:10;16804:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;16804:31:131::1;;16773:62;;16930:21;16926:115;;;17022:10;16969:23:::0;16961:73:::1;;;;-1:-1:-1::0;;;16961:73:131::1;;;;;;;;:::i;:::-;;16926:115;17118:35;17131:10;17143:9;17118:12;:35::i;:::-;17117:36;17185:10;17197:9;17109:99;;;;;;-1:-1:-1::0;;;17109:99:131::1;;;;;;;;;:::i;:::-;;;17319:23;17315:191;;;17370:47;-1:-1:-1::0;;;;;;;;;;;17407:9:131;17370:12:::1;:47::i;:::-;-1:-1:-1::0;;;;;;;;;;;9706:27:131;17481:9;;17369:48:::1;17352:147;;;;-1:-1:-1::0;;;17352:147:131::1;;;;;;;;;:::i;:::-;;;17315:191;17891:25;17919:21;:59;;17968:10;17919:59;;;-1:-1:-1::0;;;;;;;;;;;17919:59:131::1;-1:-1:-1::0;;;;;18073:28:131;::::1;;::::0;;;:9:::1;:28;::::0;;;;17891:87;;-1:-1:-1;18073:53:131::1;::::0;18116:9;18073:42:::1;:53::i;:::-;18158:17;18177:9;18058:135;;;;;;-1:-1:-1::0;;;18058:135:131::1;;;;;;;;;:::i;:::-;;;18200:86;18224:9;18235:14;18251;18267:18;18200:23;:86::i;:::-;18531:68;::::0;;;;::::1;::::0;;;;;-1:-1:-1;;;;;18531:68:131;;::::1;;::::0;;::::1;::::0;;;18509:19;;::::1;-1:-1:-1::0;18509:19:131;;;:8:::1;:19:::0;;;;;;:90;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;18509:90:131::1;::::0;;;::::1;;::::0;;18606:68:::1;:10;18626:17:::0;18509:19;18626:17;18606:19:::1;:68::i;:::-;18680:78;:10;18707:17:::0;18726:9;18737:20:::1;18680:26;:78::i;:::-;18765:71;-1:-1:-1::0;;;;;18765:5:131::1;:22;18788:10;18808:4;18815:20;18765:22;:71::i;:::-;18843:14;18860:15;:13;:15::i;:::-;18881:49;::::0;-1:-1:-1;;;18881:49:131;;18843:32;;-1:-1:-1;;;;;;18881:5:131::1;:13;::::0;::::1;::::0;:49:::1;::::0;18843:32;;18909:20:::1;::::0;18881:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18936:48:131::1;::::0;-1:-1:-1;;;18936:48:131;;-1:-1:-1;;;;;18936:11:131;::::1;::::0;::::1;::::0;:48:::1;::::0;18956:4:::1;::::0;18963:20:::1;::::0;18936:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19023:9;-1:-1:-1::0;;;;;18996:50:131::1;19004:17;-1:-1:-1::0;;;;;18996:50:131::1;;19034:11;18996:50;;;;;;:::i;:::-;;;;;;;;16767:2284;;;16518:2533:::0;;;;;;:::o;26987:155::-;27088:49;27094:10;27106:11;27119:7;27128:8;27088:5;:49::i;28979:197::-;29068:7;29098:72;:60;29118:39;29135:10;29118:37;:39::i;:::-;29098:7;;:19;:60::i;:::-;-1:-1:-1;;;;;29098:70:131;;:72::i;2293:101:35:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;34797:265:131:-;34958:16;34991:66;35025:9;35036:8;35046:10;34991:33;:66::i;:::-;34984:73;34797:265;-1:-1:-1;;;;34797:265:131:o;35666:318::-;35857:16;;;35871:1;35857:16;;;;;;;;;35813:7;;;;35857:16;;;;;;;;;;;;-1:-1:-1;35857:16:131;35830:43;;35892:6;35879:7;35887:1;35879:10;;;;;;;;:::i;:::-;;;;;;:19;;;;;35911:65;35945:9;35956:7;35965:10;35911:33;:65::i;:::-;35977:1;35911:68;;;;;;;;:::i;:::-;;;;;;;35904:75;;;35666:318;;;;;:::o;12985:204::-;1531:13:35;:11;:13::i;:::-;13092:10:131::1;::::0;-1:-1:-1;;;;;13092:10:131::1;13084:33:::0;13076:78:::1;;;;-1:-1:-1::0;;;13076:78:131::1;;;;;;;;;;;;13160:10;:24:::0;;-1:-1:-1;;;;;;13160:24:131::1;-1:-1:-1::0;;;;;13160:24:131;;;::::1;::::0;;;::::1;::::0;;12985:204::o;28618:131::-;28685:7;28715:28;:16;:7;:14;:16::i;34647:146::-;34729:7;34751:37;:10;34777;34751:25;:37::i;28325:174::-;-1:-1:-1;;;;;28444:20:131;;28425:4;28444:20;;;:9;:20;;;;;:50;;28484:9;28444:39;:50::i;36294:182::-;36398:7;36420:51;:10;36448;36460;36420:27;:51::i;36834:507::-;-1:-1:-1;;;;;37017:20:131;;36959:7;37017:20;;;:9;:20;;;;;36959:7;37062:39;37079:10;37062:37;:39::i;:::-;37043:58;-1:-1:-1;37108:13:131;37124:44;:5;37043:58;37124:33;:44::i;:::-;37108:60;;37211:9;-1:-1:-1;;;;;37178:42:131;:29;37196:10;37178:17;:29::i;:::-;-1:-1:-1;;;;;37178:42:131;;37174:144;;37239:33;;;:9;:33;;:72;-1:-1:-1;;;;;;;;;;;37301:9:131;37239:61;:72::i;:::-;37230:81;;;;:::i;:::-;;37331:5;-1:-1:-1;;;;;;36834:507:131:o;2543:215:35:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:35;::::1;2623:91;;2700:1;2672:31;;-1:-1:-1::0;;;2672:31:35::1;;;;;;;;:::i;2623:91::-;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;20097:2942:131:-;20215:7;20224:4;20230:7;11857:30;11876:10;11857:18;:30::i;:::-;11911:10;11849:74;;;;;-1:-1:-1;;;11849:74:131;;;;;;;;:::i;:::-;-1:-1:-1;20424:10:131::1;20394:27;20492:21:::0;;;:9:::1;:21;::::0;;;;;20540:46:::1;20492:21:::0;20576:9;20540:35:::1;:46::i;:::-;20519:67;;20735:13;20734:14;:49;;;;-1:-1:-1::0;20773:10:131::1;20752:17;:15;:17::i;:::-;-1:-1:-1::0;;;;;20752:31:131::1;;20734:49;:124;;;;-1:-1:-1::0;20795:33:131;::::1;::::0;:9:::1;:33;::::0;:63:::1;-1:-1:-1::0;;;;;;;;;;;20848:9:131;20795:52:::1;:63::i;:::-;20723:289;;;-1:-1:-1::0;;20944:33:131;9698:36:::1;20944:33:::0;-1:-1:-1;20944:9:131::1;:33;::::0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;21001:4:131::1;20723:289;21067:9:::0;21026:13;21018:60:::1;;;;-1:-1:-1::0;;;21018:60:131::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21085:15:131::1;21103:55;:10;21127:19:::0;21148:9;21103:23:::1;:55::i;:::-;21085:73:::0;-1:-1:-1;21085:73:131;21183:7;21172:18;;::::1;;21164:78;;;::::0;-1:-1:-1;;;21164:78:131;;::::1;::::0;::::1;19707:25:185::0;;;;19748:18;;;19741:34;19680:18;;21164:78:131::1;19533:248:185::0;21164:78:131::1;-1:-1:-1::0;21341:7:131;;-1:-1:-1;21315:23:131::1;21521:18;21501:17;21341:7:::0;21501;:17:::1;:::i;:::-;:38;21484:55;;21833:9;21829:484;;;21860:44;:16:::0;21894:9;21860:33:::1;:44::i;:::-;21933:9;21852:92;;;;;-1:-1:-1::0;;;21852:92:131::1;;;;;;;;:::i;:::-;-1:-1:-1::0;21970:7:131;;-1:-1:-1;22050:53:131::1;:10;22072:19:::0;22093:9;22050:21:::1;:53::i;:::-;22557:75;:10;22584:19:::0;22605:9;22616:15;22557:26:::1;:75::i;:::-;22894:20;22917:15;:13;:15::i;:::-;-1:-1:-1::0;;;;;22917:32:131::1;;22950:10;22962:15;22917:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22993:15:::0;;23010:9;;-1:-1:-1;22993:15:131;;-1:-1:-1;20097:2942:131;-1:-1:-1;;;;;;;;20097:2942:131:o;33149:167::-;33244:7;33266:45;:10;33290:9;33301;33266:23;:45::i;7902:225:148:-;-1:-1:-1;;;;;8067:24:148;;;8043:7;8067:24;;;;;;;;;;;:45;;;;;;;;;;;;:55;;;;;7902:225::o;1796:162:35:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:35;735:10:48;1855:23:35;1851:101;;735:10:48;1901:40:35;;-1:-1:-1;;;1901:40:35;;;;;;;;:::i;7440:138:148:-;7528:7;7550:23;:5;:12;;:21;:23::i;5188:515::-;5345:19;5367:41;5380:5;5387:9;5398;5367:12;:41::i;:::-;5345:63;;5433:10;-1:-1:-1;;;;;5418:25:148;:11;-1:-1:-1;;;;;5418:25:148;;5414:52;;5453:7;;;5414:52;-1:-1:-1;;;;;5471:24:148;;;:13;:24;;;;;;;;;;;:45;;;;;;;;;;;;:55;;:68;;-1:-1:-1;;;;;;5471:68:148;;;;;;;;;;;5550:51;;;;;5577:11;;5471:68;;5550:51;:::i;:::-;;;;;;;;5608:90;5624:5;5631:11;5644:10;5656:41;5669:5;5676:9;5687;5656:12;:41::i;:::-;5608:15;:90::i;:::-;5339:364;5188:515;;;;:::o;1618:188:46:-;1745:53;;;-1:-1:-1;;;;;20139:32:185;;;1745:53:46;;;20121:51:185;20208:32;;20188:18;;;20181:60;20257:18;;;;20250:34;;;1745:53:46;;;;;;;;;;20094:18:185;;;;1745:53:46;;;;;;;;-1:-1:-1;;;;;1745:53:46;-1:-1:-1;;;1745:53:46;;;1718:81;;1738:5;;1718:19;:81::i;31511:277:131:-;31580:9;31656:24;31683:15;:13;:15::i;:::-;-1:-1:-1;;;;;31683:27:131;;31711:11;31683:40;;;;;;;;;;;;;4409:25:185;;4397:2;4382:18;;4263:177;31683:40:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31736:17;;;;31756:15;;:27;31656:67;;-1:-1:-1;31736:47:131;;;:::i;:::-;31729:54;31511:277;-1:-1:-1;;;31511:277:131:o;29690:357::-;29789:12;29804:28;29820:11;29804:15;:28::i;:::-;29789:43;-1:-1:-1;29903:53:131;:10;29923:6;29931:11;29789:43;29948:7;29903:19;:53::i;:::-;29990:15;:13;:15::i;:::-;:52;;-1:-1:-1;;;29990:52:131;;;;;22328:25:185;;;22369:18;;;22362:34;;;22439:14;;22432:22;22412:18;;;22405:50;-1:-1:-1;;;;;29990:20:131;;;;;;;22301:18:185;;29990:52:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29783:264;29690:357;;;;:::o;6587:223:148:-;-1:-1:-1;;;;;6752:24:148;;;6728:7;6752:24;;;;;;;;;;;:45;;;;;;;;;;:53;;6587:223::o;15296:213:62:-;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;22647:36:185;22699:18;;;22692:34;;;22620:18;;15421:41:62;22466:266:185;15370:103:62;-1:-1:-1;15496:5:62;15296:213::o;1277:210:65:-;1389:16;;1442:38;1450:4;1469:3;1474:5;1442:7;:38::i;:::-;1435:45;;;;1277:210;;;;;;;:::o;7051:192:148:-;-1:-1:-1;;;;;7196:24:148;;7172:7;7196:24;;;;;;;;;;:42;;:31;;:40;:42::i;9595:228::-;-1:-1:-1;;;;;9763:32:148;;9739:7;9763:32;;;:20;;;:32;;;;;;;;:55;;;;;;;;;9595:228;;;;;:::o;2127:620:145:-;2213:4;-1:-1:-1;;;;;2233:22:145;;2225:75;;;;-1:-1:-1;;;2225:75:145;;;;;;;;;;;;-1:-1:-1;;;;;2350:37:145;;;;;;:27;;;:37;;;;;:44;;;2346:77;;;-1:-1:-1;2411:5:145;2404:12;;2346:77;2429:13;2445:19;:5;:17;:19::i;:::-;2510:35;;;;;;;;2525:4;2510:35;;-1:-1:-1;;;;;2510:35:145;;;;;;;;;;-1:-1:-1;;;;;2470:37:145;;-1:-1:-1;2470:37:145;;;:27;;;:37;;;;;;:75;;;;;;-1:-1:-1;;;;;;2470:75:145;;;;;;-1:-1:-1;;;;;;2470:75:145;;;;;;;;;;;2510:35;;-1:-1:-1;2565:26:145;:15;:24;:26::i;:::-;2552:39;;2598:75;2638:3;2643:29;2651:8;-1:-1:-1;;;;;2643:27:145;;:29::i;:::-;-1:-1:-1;;;;;2598:34:145;;;;;;:27;;;:34;;;;;;:75;:39;:75::i;:::-;-1:-1:-1;2679:45:145;;-1:-1:-1;2695:3:145;2700:23;2701:9;:5;2709:1;2701:9;:::i;:::-;-1:-1:-1;;;;;2700:21:145;;:23::i;:::-;2679:5;;:45;:15;:45::i;:::-;-1:-1:-1;2738:4:145;;2127:620;-1:-1:-1;;;;;;2127:620:145:o;30051:1456:131:-;-1:-1:-1;;;;;30342:19:131;;30299:40;30342:19;;;:8;:19;;;;;;;;;30299:72;;;;;;;;;;;;;;;;;;;;;;;;;30393:32;:68;;;;-1:-1:-1;30429:27:131;;;;:32;30393:68;30505:27;;30534;;;;30505;;30377:191;;;;-1:-1:-1;;;30377:191:131;;;;;19707:25:185;;;;19748:18;;;19741:34;19680:18;;30377:191:131;19533:248:185;30377:191:131;;;30913:27;30970:14;:16;;;30988:14;:16;;;30953:52;;;;;;;;23094:19:185;;;23138:2;23129:12;;23122:28;23175:2;23166:12;;22937:247;30953:52:131;;;;-1:-1:-1;;30953:52:131;;;;;;;;;30943:63;;30953:52;30943:63;;;;31022:29;;;;:8;:29;;;;;;30943:63;;-1:-1:-1;30943:63:131;;31022:29;;31021:30;31012:104;;;;-1:-1:-1;;;31012:104:131;;;;;;4409:25:185;;4397:2;4382:18;;4263:177;31012:104:131;-1:-1:-1;31122:29:131;;;;:8;:29;;;;;;;;;:36;;31154:4;-1:-1:-1;;31122:36:131;;;;;;31365:25;;31315:135;;-1:-1:-1;;;31315:135:131;;:17;-1:-1:-1;;;;;31315:35:131;;;;-1:-1:-1;;;31365:25:131;;;-1:-1:-1;;;;;31365:25:131;;31315:135;;31399:14;;31415;;31431:18;;31315:135;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31300:202;;;;-1:-1:-1;;;31300:202:131;;;;;;;;;;;2152:479:148;2313:39;;2339:7;2313:39;-1:-1:-1;;;;;2391:24:148;;;2358:30;2391:24;;;;;;;;;;;2422:29;;;;;;;;;;;:48;;2463:7;;2358:30;2422:48;;2463:7;;2422:48;:::i;:::-;;;;-1:-1:-1;;;;;;;2511:29:148;;;2507:1;2511:29;;;;;;;;;;:39;;;2476:84;;2492:5;;2507:1;2511:39;2552:7;2476:15;:84::i;:::-;2567:28;:15;;;2587:7;2567:19;:28::i;:::-;-1:-1:-1;2601:25:148;;-1:-1:-1;2601:12:148;;;2618:7;2601:16;:25::i;:::-;;;2307:324;2152:479;;;;:::o;2114:297:65:-;2226:24;;2193:7;;;2274:50;2226:4;2312:3;2193:7;2226:24;2274:18;:50::i;:::-;2260:64;-1:-1:-1;2341:8:65;;:63;;2356:41;2370:4;2389:7;2395:1;2389:3;:7;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;;7642:28;;7421:265;2356:41;:48;-1:-1:-1;;;2356:48:65;;-1:-1:-1;;;;;2356:48:65;2341:63;;;-1:-1:-1;2352:1:65;;2114:297;-1:-1:-1;;;;2114:297:65:o;7228:218:62:-;7285:7;-1:-1:-1;;;;;7308:25:62;;7304:105;;;7356:42;;-1:-1:-1;;;7356:42:62;;7387:3;7356:42;;;22647:36:185;22699:18;;;22692:34;;;22620:18;;7356:42:62;22466:266:185;2912:187:35;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:35;;;-1:-1:-1;;;;;;3020:17:35;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;37728:2201:131:-;37874:16;37900:26;37943:8;:15;-1:-1:-1;;;;;37929:30:131;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37929:30:131;-1:-1:-1;;;;;;38219:20:131;;38170:46;38219:20;;;:9;:20;;;;;38291:33;;;37900:59;;-1:-1:-1;;;;;;;;;;;;38291:33:131;38352:29;38370:10;38352:17;:29::i;:::-;-1:-1:-1;;;;;38352:42:131;;38330:64;;38401:9;38413:39;38430:10;38413:37;:39::i;:::-;38401:51;-1:-1:-1;38695:17:131;38715:45;:13;38401:51;38715:41;:45::i;:::-;38695:65;;38766:21;38790:14;:63;;38852:1;38790:63;;;38807:42;:10;38846:2;38807:38;:42::i;:::-;38766:87;-1:-1:-1;38859:17:131;38879:25;38766:87;38879:9;:25;:::i;:::-;38859:45;-1:-1:-1;39100:9:131;39095:807;39119:8;:15;39115:1;:19;39095:807;;;39149:13;39165:8;39174:1;39165:11;;;;;;;;:::i;:::-;;;;;;;39149:27;;39200:9;39192:5;:17;39235:5;39242:9;39184:69;;;;;;-1:-1:-1;;;39184:69:131;;;;;19707:25:185;;;;19748:18;;;19741:34;19680:18;;39184:69:131;19533:248:185;39184:69:131;;;39551:9;39543:5;:17;39539:357;;;39587:77;:13;39654:5;39661:2;39587:66;:77::i;:::-;39572:9;39582:1;39572:12;;;;;;;;:::i;:::-;;;;;;:92;-1:-1:-1;;;;;39572:92:131;;;-1:-1:-1;;;;;39572:92:131;;;;;39539:357;;;39683:14;39679:217;;;39724:86;39788:17;39796:9;39788:5;:17;:::i;:::-;39724:10;;39807:2;39724:63;:86::i;39679:217::-;39842:45;;-1:-1:-1;;;39842:45:131;;24559:2:185;39842:45:131;;;24541:21:185;24598:2;24578:18;;;24571:30;-1:-1:-1;;;24617:18:185;;;24610:49;24676:18;;39842:45:131;24357:343:185;39679:217:131;-1:-1:-1;39136:3:131;;39095:807;;;-1:-1:-1;39915:9:131;;37728:2201;-1:-1:-1;;;;;;;;;;;37728:2201:131:o;3442:206:65:-;3537:24;;3504:7;;3578:8;;:63;;3593:41;3607:4;3626:7;3632:1;3626:3;:7;:::i;3593:41::-;:48;-1:-1:-1;;;3593:48:65;;-1:-1:-1;;;;;3593:48:65;3578:63;;;3589:1;3571:70;3442:206;-1:-1:-1;;;3442:206:65:o;8389:209:148:-;-1:-1:-1;;;;;8538:32:148;;8514:7;8538:32;;;:20;;;;:32;;;;;:55;;:44;:53;:55::i;9666:164:145:-;-1:-1:-1;;;;;9781:37:145;9762:4;9781:37;;;:27;;;;;:37;;;;;:44;;;;9666:164::o;8980:242:148:-;-1:-1:-1;;;;;9153:32:148;;9129:7;9153:32;;;:20;;;;:32;;;;;:64;;:44;9206:10;9153:52;:64::i;8247:167:145:-;8353:7;8375:34;:5;8398:10;8375:22;:34::i;:::-;-1:-1:-1;;;;;8368:41:145;;8247:167;-1:-1:-1;;;8247:167:145:o;3008:266::-;-1:-1:-1;;;;;3130:37:145;;3097:4;3130:37;;;:27;;;:37;;;;;;;;3109:58;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3109:58:145;;;;;;;;;3173:46;;3207:5;3200:12;;;;;3173:46;3232:37;3240:5;3247;:11;;;3260:8;3232:7;:37::i;6096:173:148:-;6215:49;6224:5;6231:9;6242;6261:1;6215:8;:49::i;3045:479::-;3206:39;;3232:7;3206:39;-1:-1:-1;;;;;3284:24:148;;;3251:30;3284:24;;;;;;;;;;;3315:29;;;;;;;;;;;:48;;3356:7;;3251:30;3315:48;;3356:7;;3315:48;:::i;:::-;;;;-1:-1:-1;;;;;;;3392:29:148;;;:18;:29;;;;;;;;;;:39;;;3369:84;;3385:5;;3392:39;;;3445:7;3369:15;:84::i;:::-;3460:28;:15;;;3480:7;3460:19;:28::i;:::-;-1:-1:-1;3494:25:148;;-1:-1:-1;3494:12:148;;;3511:7;3494:16;:25::i;2147:118:146:-;2224:7;2246:14;:5;:12;:14::i;:::-;-1:-1:-1;;;;;2239:21:146;;2147:118;-1:-1:-1;;2147:118:146:o;10389:583:148:-;10538:3;-1:-1:-1;;;;;10529:12:148;:5;-1:-1:-1;;;;;10529:12:148;;:28;;;-1:-1:-1;10545:12:148;;10529:28;10567:7;10525:55;-1:-1:-1;;;;;10590:19:148;;;10586:191;;-1:-1:-1;;;;;10658:27:148;;10620:16;10658:27;;;:20;;;;:27;;;;;10620:16;;10658:52;;:39;10702:7;10658:43;:52::i;:::-;10619:91;;;;10744:5;-1:-1:-1;;;;;10723:47:148;;10751:8;10761;10723:47;;;;;;19707:25:185;;;19763:2;19748:18;;19741:34;19695:2;19680:18;;19533:248;10723:47:148;;;;;;;;10611:166;;10586:191;-1:-1:-1;;;;;10787:17:148;;;10783:185;;-1:-1:-1;;;;;10853:25:148;;10815:16;10853:25;;;:20;;;;:25;;;;;10815:16;;10853:50;;:37;10895:7;10853:41;:50::i;:::-;10814:89;;;;10937:3;-1:-1:-1;;;;;10916:45:148;;10942:8;10952;10916:45;;;;;;19707:25:185;;;19763:2;19748:18;;19741:34;19695:2;19680:18;;19533:248;10916:45:148;;;;;;;;10806:162;;10389:583;;;;:::o;7686:720:46:-;7766:18;7794:19;7932:4;7929:1;7922:4;7916:11;7909:4;7903;7899:15;7896:1;7889:5;7882;7877:60;7989:7;7979:176;;8033:4;8027:11;8078:16;8075:1;8070:3;8055:40;8124:16;8119:3;8112:29;7979:176;-1:-1:-1;;8232:1:46;8226:8;8182:16;;-1:-1:-1;8258:15:46;;:68;;8310:11;8325:1;8310:16;;8258:68;;;-1:-1:-1;;;;;8276:26:46;;;:31;8258:68;8254:146;;;8382:5;8349:40;;-1:-1:-1;;;8349:40:46;;;;;;;;:::i;171:148:183:-;235:9;272:43;312:2;289;272:43;:::i;4261:534:148:-;4444:15;4462:47;4479:5;4486:10;4498;4462:16;:47::i;:::-;4444:65;;4515:17;4535:44;4548:5;4555:10;4567:11;4535:12;:44::i;:::-;4515:64;-1:-1:-1;4612:19:148;4624:7;4515:64;4612:19;:::i;:::-;4601:30;;;4670:10;4601:7;4691:19;4703:7;4691:9;:19;:::i;:::-;4586:131;;;;;;;-1:-1:-1;;;4586:131:148;;-1:-1:-1;;;;;24925:32:185;;;4586:131:148;;;24907:51:185;24974:18;;;24967:34;;;;25017:18;;;25010:34;24880:18;;4586:131:148;24705:345:185;4586:131:148;-1:-1:-1;;;;;;;;4724:32:148;;;;;;:20;;;:32;;;;;;;;:55;;;;;;;;:66;;4783:7;;4724:32;:66;;4783:7;;4724:66;:::i;:::-;;;;-1:-1:-1;;;;;;;;;4261:534:148:o;4789:922:65:-;4970:11;;4910:16;;;;4996:7;;4992:713;;5019:26;5048:28;5062:4;5068:7;5074:1;5068:3;:7;:::i;5048:28::-;5107:9;;;;-1:-1:-1;5107:9:65;;;;;-1:-1:-1;;;5150:11:65;;-1:-1:-1;;;;;5150:11:65;;5235:13;;;;5231:89;;;5275:30;;-1:-1:-1;;;5275:30:65;;;;;;;;;;;5231:89;5394:3;5383:14;;:7;:14;;;5379:163;;5417:19;;;;-1:-1:-1;;;;;;;;5417:19:65;;;;;;5379:163;;;5485:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:41:65;;;;;;;;;;5475:52;;;;;;;-1:-1:-1;5475:52:65;;;;;;;;;;;;;;-1:-1:-1;;;5475:52:65;;;;;;;;;;5379:163;5563:9;-1:-1:-1;5574:5:65;;-1:-1:-1;5555:25:65;;-1:-1:-1;;;5555:25:65;4992:713;-1:-1:-1;;5621:41:65;;;;;;;;;;;;;;;-1:-1:-1;;;;;5621:41:65;;;;;;;;;;5611:52;;;;;;;-1:-1:-1;5611:52:65;;;;;;;;;;;;;-1:-1:-1;;;5611:52:65;;;;;;;;;;;;-1:-1:-1;;5655:5:65;5677:17;;3156:218:62;3213:7;-1:-1:-1;;;;;3236:25:62;;3232:105;;;3284:42;;-1:-1:-1;;;3284:42:62;;3315:3;3284:42;;;22647:36:185;22699:18;;;22692:34;;;22620:18;;3284:42:62;22466:266:185;957:352:146;1041:7;1050;1065:15;1083:14;:5;:12;:14::i;:::-;1065:32;;1107:7;1118:1;1107:12;1103:58;;-1:-1:-1;;;;;1129:25:146;;-1:-1:-1;1129:25:146;;-1:-1:-1;1129:25:146;;1103:58;1166:14;1183:19;:7;:17;:19::i;:::-;1166:36;;1208:56;1219:26;:15;:24;:26::i;:::-;1247:16;1257:6;1247:7;:16;:::i;:::-;1208:5;;:56;:10;:56::i;:::-;-1:-1:-1;1278:7:146;;-1:-1:-1;1287:16:146;1297:6;1278:7;1287:16;:::i;:::-;-1:-1:-1;;;;;1270:34:146;;;;-1:-1:-1;1270:34:146;;-1:-1:-1;;;957:352:146;;;;;;:::o;6061:433:65:-;6218:7;6237:230;6250:4;6244:3;:10;6237:230;;;6270:11;6284:23;6297:3;6302:4;6284:12;:23::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;6270:37;;-1:-1:-1;6325:35:65;;;;7642:28;;6325:29;;;:35;6321:136;;;6387:3;6380:10;;6321:136;;;6435:7;:3;6441:1;6435:7;:::i;:::-;6429:13;;6321:136;6256:211;6237:230;;;-1:-1:-1;6483:4:65;6061:433;-1:-1:-1;;;6061:433:65:o;7261:301:145:-;7424:7;7454:35;;;:27;;;:35;;;;;7424:7;;7454:65;;7508:10;7454:53;:65::i;:::-;7439:80;;7540:16;:4;-1:-1:-1;;;;;7540:14:145;;:16::i;2731:286:146:-;2824:7;2847:39;:5;2870:15;-1:-1:-1;551:43:183;471:126;2847:39:146;2839:101;;;;-1:-1:-1;;;2839:101:146;;;;;;;;;;;;2953:59;2977:34;2994:5;2977:32;:34::i;:::-;2953:5;;:23;:59::i;4039:1503:145:-;4145:4;;4179:19;:5;:17;:19::i;:::-;4157:41;;4218:11;-1:-1:-1;;;;;4208:21:145;:6;-1:-1:-1;;;;;4208:21:145;;4204:106;;4246:57;;-1:-1:-1;;;4246:57:145;;-1:-1:-1;;;;;25519:32:185;;;4246:57:145;;;25501:51:185;25588:32;;25568:18;;;25561:60;25474:18;;4246:57:145;25327:300:185;4204:106:145;4406:32;;;;;;;;-1:-1:-1;4406:32:145;;;;;;;;;;-1:-1:-1;;;;;4366:37:145;;;;:27;;;:37;;;;;;:72;;;;;;-1:-1:-1;;;;;;4366:72:145;;;;;;-1:-1:-1;;;;;;4366:72:145;;;-1:-1:-1;;;;;4366:72:145;;;;;;;;;;;;;4773:15;-1:-1:-1;4773:11:145;:15;:::i;:::-;4753:35;;4794:10;4807:26;:15;:24;:26::i;:::-;4794:39;;4955:6;-1:-1:-1;;;;;4942:19:145;:9;-1:-1:-1;;;;;4942:19:145;;4938:323;;-1:-1:-1;;;;;5003:38:145;;4971:21;5003:38;;;:27;;;:38;;;;;:59;;:47;;:45;:47::i;:59::-;4971:92;;5117:48;;;;;;;;5132:4;5117:48;;;;;;5145:18;:6;-1:-1:-1;;;;;5145:16:145;;:18::i;:::-;-1:-1:-1;;;;;5117:48:145;;;;;;-1:-1:-1;;;;;5072:42:145;;;;;;:27;;;:42;;;;;;;;:93;;;;;;;;;;;;;;-1:-1:-1;;;;;;5072:93:145;;;;;;;-1:-1:-1;;;;;;5072:93:145;;;;;;;;;;;;;5173:81;;5214:3;;5219:34;;:32;:34::i;:::-;-1:-1:-1;;;;;5173:35:145;;;;;;:27;;;:35;;;;;;:81;:40;:81::i;:::-;;;4963:298;4938:323;-1:-1:-1;;;;;5337:38:145;;5394:1;5337:38;;;:27;;;:38;;;;;:60;;5381:3;;5337:43;:60::i;:::-;;;5475:45;5491:3;5496:23;5497:9;-1:-1:-1;;;;;5496:21:145;;:23::i;:::-;5475:5;;:45;:15;:45::i;:::-;-1:-1:-1;5533:4:145;;4039:1503;-1:-1:-1;;;;;;;;4039:1503:145:o;1532:472:146:-;1616:7;1625;1640:15;1658:14;:5;:12;:14::i;:::-;1640:32;;1682:7;1693:1;1682:12;1678:58;;-1:-1:-1;;;;;1704:25:146;;-1:-1:-1;1704:25:146;;-1:-1:-1;1704:25:146;;1678:58;1741:14;1758:19;:7;:17;:19::i;:::-;1741:36;-1:-1:-1;1868:10:146;1791:7;1741:36;-1:-1:-1;;;;;1791:17:146;;;;;;;;1783:114;;;;-1:-1:-1;;;1783:114:146;;-1:-1:-1;;;;;26055:32:185;;;1783:114:146;;;26037:51:185;-1:-1:-1;;;;;26124:32:185;;;26104:18;;;26097:60;26193:32;26173:18;;;26166:60;26010:18;;1783:114:146;25835:397:185;1783:114:146;;;;1903:56;1914:26;:15;:24;:26::i;:::-;1942:16;1952:6;1942:7;:16;:::i;1903:56::-;-1:-1:-1;1973:7:146;;-1:-1:-1;1982:16:146;1992:6;1973:7;1982:16;:::i;3595:153:61:-;3657:7;3730:11;3740:1;3731:5;;;3730:11;:::i;:::-;3720:21;;3721:5;;;3720:21;:::i;2716:606:65:-;2834:24;;2801:7;;;2834:24;2933:1;2927:7;;2923:234;;;2950:11;2970:14;2980:3;2970:9;:14::i;:::-;2964:20;;:3;:20;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;2950:34;;-1:-1:-1;7642:28:65;;3008:42;;;;;3002:48;;;;2998:149;;;3077:3;3070:10;;2998:149;;;3125:7;:3;3131:1;3125:7;:::i;:::-;3119:13;;2998:149;2936:221;2923:234;3167:11;3181:53;3200:4;3219:3;3224;3229:4;3181:18;:53::i;:::-;3167:67;-1:-1:-1;3252:8:65;;:63;;3267:41;3281:4;3300:7;3306:1;3300:3;:7;:::i;3267:41::-;:48;-1:-1:-1;;;3267:48:65;;-1:-1:-1;;;;;3267:48:65;3252:63;;;3263:1;3252:63;3245:70;2716:606;-1:-1:-1;;;;;;;2716:606:65:o;18080:5181:61:-;18128:7;18246:1;18241;:6;18237:53;;-1:-1:-1;18274:1:61;18080:5181::o;18237:53::-;19230:1;19258;-1:-1:-1;;;19278:16:61;;19274:92;;19321:3;19314:10;;;;;19349:2;19342:9;19274:92;-1:-1:-1;;;19383:2:61;:15;19379:90;;19425:2;19418:9;;;;;19452:2;19445:9;19379:90;-1:-1:-1;;;19486:2:61;:15;19482:90;;19528:2;19521:9;;;;;19555:2;19548:9;19482:90;19596:7;19589:2;:15;19585:89;;19631:2;19624:9;;;;;19658:1;19651:8;19585:89;19698:6;19691:2;:14;19687:87;;19732:1;19725:8;;;;;19758:1;19751:8;19687:87;19798:6;19791:2;:14;19787:87;;19832:1;19825:8;;;;;19858:1;19851:8;19787:87;19898:6;19891:2;:14;19887:61;;19932:1;19925:8;19887:61;20374:1;:6;20385:1;20373:13;;;;;22284:1;20373:13;22284:6;;;;:::i;:::-;;22279:2;:11;22278:18;;22273:23;;22404:1;22397:2;22393:1;:6;;;;;:::i;:::-;;22388:2;:11;22387:18;;22382:23;;22515:1;22508:2;22504:1;:6;;;;;:::i;:::-;;22499:2;:11;22498:18;;22493:23;;22624:1;22617:2;22613:1;:6;;;;;:::i;:::-;;22608:2;:11;22607:18;;22602:23;;22734:1;22727:2;22723:1;:6;;;;;:::i;:::-;;22718:2;:11;22717:18;;22712:23;;22844:1;22837:2;22833:1;:6;;;;;:::i;:::-;;22828:2;:11;22827:18;;22822:23;;23216:28;23241:2;23237:1;:6;;;;;:::i;:::-;;23232:11;;;34795:145:62;23216:28:61;23211:33;;;18080:5181;-1:-1:-1;;;18080:5181:61:o;14:131:185:-;-1:-1:-1;;;;;89:31:185;;79:42;;69:70;;135:1;132;125:12;150:388;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;-1:-1:-1;460:2:185;445:18;;432:32;473:33;432:32;473:33;:::i;:::-;525:7;515:17;;;150:388;;;;;:::o;543:203::-;-1:-1:-1;;;;;707:32:185;;;;689:51;;677:2;662:18;;543:203::o;751:226::-;810:6;863:2;851:9;842:7;838:23;834:32;831:52;;;879:1;876;869:12;831:52;-1:-1:-1;924:23:185;;751:226;-1:-1:-1;751:226:185:o;982:284::-;1040:6;1093:2;1081:9;1072:7;1068:23;1064:32;1061:52;;;1109:1;1106;1099:12;1061:52;1148:9;1135:23;-1:-1:-1;;;;;1191:5:185;1187:30;1180:5;1177:41;1167:69;;1232:1;1229;1222:12;1271:247;1330:6;1383:2;1371:9;1362:7;1358:23;1354:32;1351:52;;;1399:1;1396;1389:12;1351:52;1438:9;1425:23;1457:31;1482:5;1457:31;:::i;1523:127::-;1584:10;1579:3;1575:20;1572:1;1565:31;1615:4;1612:1;1605:15;1639:4;1636:1;1629:15;1655:257;1727:4;1721:11;;;1759:17;;-1:-1:-1;;;;;1791:34:185;;1827:22;;;1788:62;1785:88;;;1853:18;;:::i;:::-;1889:4;1882:24;1655:257;:::o;1917:252::-;1989:2;1983:9;2031:3;2019:16;;-1:-1:-1;;;;;2050:34:185;;2086:22;;;2047:62;2044:88;;;2112:18;;:::i;2174:255::-;2246:2;2240:9;2288:6;2276:19;;-1:-1:-1;;;;;2310:34:185;;2346:22;;;2307:62;2304:88;;;2372:18;;:::i;2434:253::-;2506:2;2500:9;2548:4;2536:17;;-1:-1:-1;;;;;2568:34:185;;2604:22;;;2565:62;2562:88;;;2630:18;;:::i;2692:253::-;2764:2;2758:9;2806:4;2794:17;;-1:-1:-1;;;;;2826:34:185;;2862:22;;;2823:62;2820:88;;;2888:18;;:::i;2950:275::-;3021:2;3015:9;3086:2;3067:13;;-1:-1:-1;;3063:27:185;3051:40;;-1:-1:-1;;;;;3106:34:185;;3142:22;;;3103:62;3100:88;;;3168:18;;:::i;:::-;3204:2;3197:22;2950:275;;-1:-1:-1;2950:275:185:o;3230:386::-;3284:5;3332:4;3320:9;3315:3;3311:19;3307:30;3304:50;;;3350:1;3347;3340:12;3304:50;3372:22;;:::i;:::-;3439:23;;3471:22;;3566:2;3551:18;;;3538:32;3586:14;;;3579:31;;;;-1:-1:-1;3363:31:185;3230:386;-1:-1:-1;3230:386:185:o;3621:229::-;3707:6;3760:2;3748:9;3739:7;3735:23;3731:32;3728:52;;;3776:1;3773;3766:12;3728:52;3799:45;3836:7;3825:9;3799:45;:::i;4008:250::-;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;;3950:47;4196:2;4181:18;;4208:44;3855:148;4673:529;4750:6;4758;4766;4819:2;4807:9;4798:7;4794:23;4790:32;4787:52;;;4835:1;4832;4825:12;4787:52;4874:9;4861:23;4893:31;4918:5;4893:31;:::i;:::-;4943:5;-1:-1:-1;5000:2:185;4985:18;;4972:32;5013:33;4972:32;5013:33;:::i;:::-;5065:7;-1:-1:-1;5124:2:185;5109:18;;5096:32;5137:33;5096:32;5137:33;:::i;:::-;5189:7;5179:17;;;4673:529;;;;;:::o;5618:183::-;5678:4;-1:-1:-1;;;;;5703:6:185;5700:30;5697:56;;;5733:18;;:::i;:::-;-1:-1:-1;5778:1:185;5774:14;5790:4;5770:25;;5618:183::o;5806:961::-;5890:6;5943:2;5931:9;5922:7;5918:23;5914:32;5911:52;;;5959:1;5956;5949:12;5911:52;5999:9;5986:23;-1:-1:-1;;;;;6024:6:185;6021:30;6018:50;;;6064:1;6061;6054:12;6018:50;6087:22;;6140:4;6132:13;;6128:27;-1:-1:-1;6118:55:185;;6169:1;6166;6159:12;6118:55;6209:2;6196:16;6232:64;6248:47;6288:6;6248:47;:::i;:::-;6232:64;:::i;:::-;6318:3;6342:6;6337:3;6330:19;6374:2;6369:3;6365:12;6358:19;;6429:2;6419:6;6416:1;6412:14;6408:2;6404:23;6400:32;6386:46;;6455:7;6447:6;6444:19;6441:39;;;6476:1;6473;6466:12;6441:39;6508:2;6504;6500:11;6489:22;;6520:217;6536:6;6531:3;6528:15;6520:217;;;6616:3;6603:17;6633:31;6658:5;6633:31;:::i;:::-;6677:18;;6724:2;6553:12;;;;6715;;;;6520:217;;6772:684;7016:2;7028:21;;;7098:13;;7001:18;;;7120:22;;;6968:4;;7199:15;;;7173:2;7158:18;;;6968:4;7242:188;7256:6;7253:1;7250:13;7242:188;;;7305:45;7346:3;7337:6;7331:13;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;3950:47;3855:148;7305:45;7417:2;7405:15;;;;;7379:2;7370:12;;;;;7278:1;7271:9;7242:188;;;-1:-1:-1;7447:3:185;;6772:684;-1:-1:-1;;;;;6772:684:185:o;8062:118::-;8148:5;8141:13;8134:21;8127:5;8124:32;8114:60;;8170:1;8167;8160:12;8185:128;8250:20;;8279:28;8250:20;8279:28;:::i;:::-;8185:128;;;:::o;8318:481::-;8392:6;8400;8408;8461:2;8449:9;8440:7;8436:23;8432:32;8429:52;;;8477:1;8474;8467:12;8429:52;8522:23;;;-1:-1:-1;8642:2:185;8627:18;;8614:32;;-1:-1:-1;8724:2:185;8709:18;;8696:32;8737:30;8696:32;8737:30;:::i;8804:367::-;8872:6;8880;8933:2;8921:9;8912:7;8908:23;8904:32;8901:52;;;8949:1;8946;8939:12;8901:52;8988:9;8975:23;9007:31;9032:5;9007:31;:::i;:::-;9057:5;9135:2;9120:18;;;;9107:32;;-1:-1:-1;;;8804:367:185:o;9176:1357::-;9358:6;9366;9374;9382;9390;9398;9442:9;9433:7;9429:23;9472:3;9468:2;9464:12;9461:32;;;9489:1;9486;9479:12;9461:32;9528:9;9515:23;9547:31;9572:5;9547:31;:::i;:::-;9597:5;-1:-1:-1;9654:2:185;9639:18;;9626:32;9667:33;9626:32;9667:33;:::i;:::-;9719:7;-1:-1:-1;9745:54:185;9791:7;9786:2;9771:18;;9745:54;:::i;:::-;9735:64;-1:-1:-1;9834:3:185;-1:-1:-1;;9815:17:185;;9811:27;9808:47;;;9851:1;9848;9841:12;9808:47;;9879:22;;:::i;:::-;9974:3;9959:19;;9946:33;9988:24;;10085:3;10070:19;;10057:33;10119:2;10106:16;;10099:33;10205:3;10190:19;;10177:33;10239:2;10226:16;;10219:33;10325:3;10310:19;;10297:33;10359:2;10346:16;;10339:33;9995:7;-1:-1:-1;10417:55:185;10464:7;10458:3;10443:19;;10417:55;:::i;:::-;10407:65;;10491:36;10522:3;10511:9;10507:19;10491:36;:::i;:::-;10481:46;;9176:1357;;;;;;;;:::o;10801:1233::-;10935:6;10943;10951;11004:2;10992:9;10983:7;10979:23;10975:32;10972:52;;;11020:1;11017;11010:12;10972:52;11059:9;11046:23;11078:31;11103:5;11078:31;:::i;:::-;11128:5;-1:-1:-1;11206:2:185;11191:18;;11178:32;;-1:-1:-1;11287:2:185;11272:18;;11259:32;-1:-1:-1;;;;;11303:30:185;;11300:50;;;11346:1;11343;11336:12;11300:50;11369:22;;11422:4;11414:13;;11410:27;-1:-1:-1;11400:55:185;;11451:1;11448;11441:12;11400:55;11491:2;11478:16;11514:64;11530:47;11570:6;11530:47;:::i;11514:64::-;11600:3;11624:6;11619:3;11612:19;11656:2;11651:3;11647:12;11640:19;;11711:2;11701:6;11698:1;11694:14;11690:2;11686:23;11682:32;11668:46;;11737:7;11729:6;11726:19;11723:39;;;11758:1;11755;11748:12;11723:39;11790:2;11786;11782:11;11771:22;;11802:202;11818:6;11813:3;11810:15;11802:202;;;11912:17;;11942:20;;11991:2;11835:12;;;;11982;;;;11802:202;;;12023:5;12013:15;;;;;;10801:1233;;;;;:::o;12039:637::-;12229:2;12241:21;;;12311:13;;12214:18;;;12333:22;;;12181:4;;12412:15;;;12386:2;12371:18;;;12181:4;12455:195;12469:6;12466:1;12463:13;12455:195;;;12534:13;;-1:-1:-1;;;;;12530:39:185;12518:52;;12599:2;12625:15;;;;12590:12;;;;12566:1;12484:9;12455:195;;12681:519;12790:6;12798;12806;12859:2;12847:9;12838:7;12834:23;12830:32;12827:52;;;12875:1;12872;12865:12;12827:52;12914:9;12901:23;12933:31;12958:5;12933:31;:::i;:::-;12983:5;13061:2;13046:18;;13033:32;;-1:-1:-1;13164:2:185;13149:18;;;13136:32;;12681:519;-1:-1:-1;;;12681:519:185:o;14783:138::-;14862:13;;14884:31;14862:13;14884:31;:::i;14926:745::-;15025:6;15085:3;15073:9;15064:7;15060:23;15056:33;15101:2;15098:22;;;15116:1;15113;15106:12;15098:22;-1:-1:-1;15158:22:185;;:::i;:::-;15225:16;;15250:22;;15338:2;15323:18;;;15317:25;15358:14;;;15351:31;15427:2;15412:18;;15406:25;15440:33;15406:25;15440:33;:::i;:::-;15500:2;15489:14;;15482:31;15558:2;15543:18;;15537:25;15571:30;15537:25;15571:30;:::i;:::-;15628:2;15617:14;;15610:31;15621:5;14926:745;-1:-1:-1;;;14926:745:185:o;15676:383::-;15741:5;15789:4;15777:9;15772:3;15768:19;15764:30;15761:50;;;15807:1;15804;15797:12;15761:50;15829:22;;:::i;:::-;15896:16;;15921:22;;16009:2;15994:18;;;15988:25;16029:14;;;16022:31;;;;-1:-1:-1;15820:31:185;15676:383;-1:-1:-1;15676:383:185:o;16064:251::-;16161:6;16214:2;16202:9;16193:7;16189:23;16185:32;16182:52;;;16230:1;16227;16220:12;16182:52;16253:56;16301:7;16290:9;16253:56;:::i;16320:300::-;-1:-1:-1;;;;;16512:32:185;;;16494:51;;16581:32;;16576:2;16561:18;;16554:60;16482:2;16467:18;;16320:300::o;16625:1422::-;16727:6;16771:9;16762:7;16758:23;16808:3;16804:2;16800:12;16824:2;16821:22;;;16839:1;16836;16829:12;16821:22;-1:-1:-1;16881:22:185;;:::i;:::-;16923:4;16919:2;16915:13;16912:33;;;16941:1;16938;16931:12;16912:33;16969:22;;:::i;:::-;17036:16;;17061:24;;17151:2;17136:18;;;17130:25;17171:16;;;17164:33;17206:22;;;17294:4;17279:20;;;17273:27;17316:14;;;17309:31;;;;17406:2;17391:18;;;17385:25;17426:16;;;17419:33;;;;17518:3;17503:19;;;17497:26;17539:14;;;17532:31;;;;17629:3;17614:19;;;17608:26;17650:15;;;17643:32;;;;17741:3;17726:19;;;17720:26;17762:15;;;17755:32;;;;17853:3;17838:19;;;17832:26;17874:15;;;17867:32;;;;17967:6;17952:22;;;17946:29;17991:15;;;17984:33;;;;-1:-1:-1;17213:5:185;;16625:1422;-1:-1:-1;;16625:1422:185:o;18052:274::-;-1:-1:-1;;;;;18244:32:185;;;;18226:51;;18308:2;18293:18;;18286:34;18214:2;18199:18;;18052:274::o;18331:245::-;18398:6;18451:2;18439:9;18430:7;18426:23;18422:32;18419:52;;;18467:1;18464;18457:12;18419:52;18499:9;18493:16;18518:28;18540:5;18518:28;:::i;18904:230::-;18974:6;19027:2;19015:9;19006:7;19002:23;18998:32;18995:52;;;19043:1;19040;19033:12;18995:52;-1:-1:-1;19088:16:185;;18904:230;-1:-1:-1;18904:230:185:o;19139:127::-;19200:10;19195:3;19191:20;19188:1;19181:31;19231:4;19228:1;19221:15;19255:4;19252:1;19245:15;19271:127;19332:10;19327:3;19323:20;19320:1;19313:31;19363:4;19360:1;19353:15;19387:4;19384:1;19377:15;19403:125;19468:9;;;19489:10;;;19486:36;;;19502:18;;:::i;19786:128::-;19853:9;;;19874:11;;;19871:37;;;19888:18;;:::i;20295:158::-;20385:13;;20427:1;20417:12;;20407:40;;20443:1;20440;20433:12;20458:1669;20555:6;20599:9;20590:7;20586:23;20636:3;20632:2;20628:12;20652:2;20649:22;;;20667:1;20664;20657:12;20649:22;-1:-1:-1;20709:22:185;;:::i;:::-;20751:4;20747:2;20743:13;20740:33;;;20769:1;20766;20759:12;20740:33;20797:22;;:::i;:::-;20864:16;;20889:24;;20979:2;20964:18;;;20958:25;20999:16;;;20992:33;21091:2;21076:18;;;21070:25;21111:16;;;21104:33;21203:2;21188:18;;;21182:25;21223:16;;;21216:33;21315:3;21300:19;;;21294:26;21336:17;;;21329:34;21429:3;21414:19;;;21408:26;21450:17;;;21443:34;21543:4;21528:20;;;21522:27;21565:18;;;21558:35;21602:22;;;20782:37;-1:-1:-1;21656:62:185;21712:4;21697:20;;21656:62;:::i;:::-;21651:2;21644:5;21640:14;21633:86;21751:50;21796:3;21785:9;21781:19;21751:50;:::i;:::-;21746:2;21739:5;21735:14;21728:74;21834:50;21879:3;21868:9;21864:19;21834:50;:::i;:::-;21829:2;21818:14;;21811:74;21951:3;21936:19;;21930:26;21983:3;21972:15;;21965:32;;;21930:26;-1:-1:-1;22030:66:185;22088:7;22082:3;22067:19;;22030:66;:::i;:::-;22024:3;22013:15;;22006:91;22017:5;20458:1669;-1:-1:-1;;;;20458:1669:185:o;22737:195::-;-1:-1:-1;;;;;22806:27:185;;;22835;;;22802:61;;22875:28;;22872:54;;;22906:18;;:::i;23371:709::-;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;;3950:47;23723:3;23708:19;;23822:6;23816:13;23811:2;23800:9;23796:18;23789:41;23884:4;23876:6;23872:17;23866:24;23861:2;23850:9;23846:18;23839:52;23946:2;23938:6;23934:15;23928:22;23922:3;23911:9;23907:19;23900:51;24006:2;23998:6;23994:15;23988:22;23982:3;23971:9;23967:19;23960:51;24020:54;24069:3;24058:9;24054:19;24046:6;3928:12;;3916:25;;3990:4;3979:16;;;3973:23;3957:14;;3950:47;3855:148;25632:198;-1:-1:-1;;;;;25732:27:185;;;25703;;;25699:61;;25772:29;;25769:55;;;25804:18;;:::i;26237:127::-;26298:10;26293:3;26289:20;26286:1;26279:31;26329:4;26326:1;26319:15;26353:4;26350:1;26343:15;26369:217;26409:1;26435;26425:132;;26479:10;26474:3;26470:20;26467:1;26460:31;26514:4;26511:1;26504:15;26542:4;26539:1;26532:15;26425:132;-1:-1:-1;26571:9:185;;26369:217::o","linkReferences":{},"immutableReferences":{"93228":[{"start":2054,"length":32},{"start":7138,"length":32}],"93230":[{"start":1283,"length":32},{"start":3993,"length":32},{"start":4078,"length":32},{"start":4196,"length":32},{"start":4339,"length":32}],"93232":[{"start":1360,"length":32},{"start":5406,"length":32}],"93235":[{"start":882,"length":32},{"start":2476,"length":32},{"start":2539,"length":32},{"start":4042,"length":32},{"start":4149,"length":32}]}},"methodIdentifiers":{"ACTIVATION_THRESHOLD()":"b4ac4536","ASSET()":"4800d97f","BONUS_INSTANCE_ADDRESS()":"710ca354","EJECTION_THRESHOLD()":"dbc85752","addRollup(address)":"59264f00","balanceOf(address,address)":"f7888aec","delegate(address,address,address)":"2e341ce0","deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":"6902c67b","effectiveBalanceOf(address,address)":"5338c758","finalizeWithdraw(uint256)":"0928d152","getAttesterCountAtTime(address,uint256)":"ec6e69db","getAttesterFromIndexAtTime(address,uint256,uint256)":"a9cd26c9","getAttestersFromIndicesAtTime(address,uint256,uint256[])":"9796d977","getBonusInstanceAddress()":"9f6bc70c","getConfig(address)":"e48a5f7b","getDelegatee(address,address)":"0015eaaa","getG1PublicKeysFromAddresses(address[])":"3fd20fe1","getGovernance()":"289b3c0d","getLatestRollup()":"b35186a8","getLatestRollupAt(uint256)":"6a915516","getPowerUsed(address,uint256)":"671431c3","getRegistrationDigest((uint256,uint256))":"11d66fee","getVotingPower(address)":"bb4d4436","getVotingPowerAt(address,uint256)":"eaeded5f","getWithdrawer(address)":"0f9f5410","isRegistered(address,address)":"d3da927f","isRollupRegistered(address)":"52f44a14","ownedPKs(bytes32)":"4bd96ece","owner()":"8da5cb5b","proofOfPossessionGasLimit()":"f852fef9","proposeWithLock(address,address)":"30eb4bdd","renounceOwnership()":"715018a6","setGovernance(address)":"ab033ea9","setProofOfPossessionGasLimit(uint64)":"0e9f7e43","supplyOf(address)":"62400e4c","totalSupply()":"18160ddd","transferOwnership(address)":"f2fde38b","vote(uint256,uint256,bool)":"6a18ff7a","voteWithBonus(uint256,uint256,bool)":"52097e4e","withdraw(address,uint256)":"f3fef3a3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"__owner\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_activationThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ejectionThreshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AddressSnapshotLib__CannotAddAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"name\":\"AddressSnapshotLib__IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"Delegation__InsufficientPower\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"existingPk1x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"existingPk1y\",\"type\":\"uint256\"}],\"name\":\"GSE__CannotChangePublicKeys\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__FailedToRemove\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"GSE__FatalError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__GovernanceAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InstanceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GSE__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GSE__InvalidProofOfPossession\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__InvalidRollupAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotLatestRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotRollup\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NotWithdrawer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__NothingToExit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"GSE__OutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"GSE__ProofOfPossessionAlreadySeen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"GSE__RollupAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__CheckpointedUintLib__InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CheckpointedUintLib__NotInPast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldDelegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDelegatee\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ACTIVATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BONUS_INSTANCE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EJECTION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollup\",\"type\":\"address\"}],\"name\":\"addRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_publicKeyInG1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"x1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y1\",\"type\":\"uint256\"}],\"internalType\":\"struct G2Point\",\"name\":\"_publicKeyInG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_proofOfPossession\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_moveWithLatestRollup\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"effectiveBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getAttesterCountAtTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getAttesterFromIndexAtTime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_indices\",\"type\":\"uint256[]\"}],\"name\":\"getAttestersFromIndicesAtTime\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBonusInstanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"publicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"internalType\":\"struct AttesterConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"getDelegatee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_attesters\",\"type\":\"address[]\"}],\"name\":\"getG1PublicKeysFromAddresses\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGovernance\",\"outputs\":[{\"internalType\":\"contract Governance\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLatestRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getLatestRollupAt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"getPowerUsed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"_publicKey\",\"type\":\"tuple\"}],\"name\":\"getRegistrationDigest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct G1Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"}],\"name\":\"getVotingPower\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegatee\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"getVotingPowerAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"getWithdrawer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"}],\"name\":\"isRollupRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedPK1\",\"type\":\"bytes32\"}],\"name\":\"ownedPKs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isRegistered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofOfPossessionGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_payload\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"proposeWithLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract Governance\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_proofOfPossessionGasLimit\",\"type\":\"uint64\"}],\"name\":\"setProofOfPossessionGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instance\",\"type\":\"address\"}],\"name\":\"supplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"voteWithBonus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"addRollup(address)\":{\"details\":\"rollups only have access to the \\\"bonus instance\\\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.\",\"params\":{\"_rollup\":\"- The address of the rollup to add\"}},\"delegate(address,address,address)\":{\"details\":\"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \\\"active\\\" in order to use it. See `Governance.getProposalState` for more details.\",\"params\":{\"_attester\":\"- The address of the attester to delegate on behalf of\",\"_delegatee\":\"- The delegatee that should receive the power\",\"_instance\":\"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged.\"}},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"details\":\"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.\",\"params\":{\"_attester\":\"- The attester address on behalf of which the deposit is made.\",\"_moveWithLatestRollup\":\"- Whether to deposit into the specific instance, or the bonus instance\",\"_proofOfPossession\":\"- A proof of possessions for the private key corresponding _publicKey in G1 and G2\",\"_publicKeyInG1\":\"- BLS public key for the attester in G1\",\"_publicKeyInG2\":\"- BLS public key for the attester in G2\",\"_withdrawer\":\"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts.\"}},\"effectiveBalanceOf(address,address)\":{\"params\":{\"_attester\":\"- The attester to look at\",\"_instance\":\"- The instance to look at\"},\"returns\":{\"_0\":\"The effective balance of the attester at the instance\"}},\"finalizeWithdraw(uint256)\":{\"details\":\"Will be a no operation if the withdrawal is already collected.\",\"params\":{\"_withdrawalId\":\"- The id of the withdrawal\"}},\"getAttesterCountAtTime(address,uint256)\":{\"params\":{\"_instance\":\"- The instance to look at\",\"_timestamp\":\"- The timestamp to lookup\"},\"returns\":{\"_0\":\"The number of effective attesters at the instance at the time of `_timestamp`\"}},\"getG1PublicKeysFromAddresses(address[])\":{\"params\":{\"_attesters\":\"- The attesters to lookup\"},\"returns\":{\"_0\":\"The G1 public keys of the attesters\"}},\"getLatestRollup()\":{\"returns\":{\"_0\":\"The address of the latest instance\"}},\"getLatestRollupAt(uint256)\":{\"params\":{\"_timestamp\":\"- The timestamp to lookup\"},\"returns\":{\"_0\":\"The address of the latest instance at the time of lookup\"}},\"getRegistrationDigest((uint256,uint256))\":{\"params\":{\"_publicKey\":\"- The public key to get the registration digest of\"},\"returns\":{\"_0\":\"The registration digest of the public key. Sign and submit as a proof of possession.\"}},\"isRegistered(address,address)\":{\"params\":{\"_attester\":\"- The attester to lookup\",\"_instance\":\"- The instance to look at\"},\"returns\":{\"_0\":\"True if the `_attester` is in the set of `_instance`, false otherwise\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proposeWithLock(address,address)\":{\"details\":\"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.\",\"params\":{\"_payload\":\"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\",\"_to\":\"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)\"},\"returns\":{\"_0\":\"The id of the proposal\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"vote(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\",\"_support\":\"- True if supporting the proposal, false otherwise.\"}},\"voteWithBonus(uint256,uint256,bool)\":{\"params\":{\"_amount\":\"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power\",\"_proposalId\":\"- The id of the proposal in the governance to vote on\"}},\"withdraw(address,uint256)\":{\"details\":\"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \\\"what to do\\\" with the funds. And it must look at the returned amount withdrawn and the bool.\",\"params\":{\"_amount\":\"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.\",\"_attester\":\"- The attester to withdraw from.\"},\"returns\":{\"_0\":\"The actual amount withdrawn.\",\"_1\":\"True if attester is removed from set, false otherwise\",\"_2\":\"The id of the withdrawal at the governance\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"BONUS_INSTANCE_ADDRESS()\":{\"notice\":\"Create a special \\\"bonus\\\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \\\"instances\\\", and an \\\"instance\\\" is either the address of a \\\"true\\\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \\\"bonus\\\" address, which has its own accounting. NB: in every other context, \\\"instance\\\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \\\"rollup\\\" if we know we're talking about a rollup (often msg.sender), and \\\"instance\\\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \\\"bonus\\\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \\\"buckets\\\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \\\"effective\\\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \\\"affected instance\\\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc.\"},\"addRollup(address)\":{\"notice\":\"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set\"},\"delegate(address,address,address)\":{\"notice\":\"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions.\"},\"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)\":{\"notice\":\"Deposits a new attester\"},\"effectiveBalanceOf(address,address)\":{\"notice\":\"Get the effective balance of the attester at the instance. The effective balance is the balance of the attester at the specific instance or at the bonus if the instance is the latest rollup and he was not at the specific. We can do this as an `or` since the attester may only be active at one of them.\"},\"finalizeWithdraw(uint256)\":{\"notice\":\"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc.\"},\"getAttesterCountAtTime(address,uint256)\":{\"notice\":\"Get the number of effective attesters at the instance at the time of `_timestamp` (including the bonus instance)\"},\"getG1PublicKeysFromAddresses(address[])\":{\"notice\":\"Get the G1 public keys of the attesters NOTE: this function does NOT check if the attesters are CURRENTLY ACTIVE.\"},\"getLatestRollup()\":{\"notice\":\"Get the address of latest instance\"},\"getLatestRollupAt(uint256)\":{\"notice\":\"Get the address of the instance that was latest at time `_timestamp`\"},\"getRegistrationDigest((uint256,uint256))\":{\"notice\":\"Get the registration digest of a public key by hashing the the public key to a point on the curve which may subsequently be signed by the corresponding private key.\"},\"isRegistered(address,address)\":{\"notice\":\"Lookup if the `_attester` is in the `_instance` attester set\"},\"proposeWithLock(address,address)\":{\"notice\":\"Make a proposal to Governance via `Governance.proposeWithLock`\"},\"vote(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to `msg.sender`\"},\"voteWithBonus(uint256,uint256,bool)\":{\"notice\":\"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/governance/GSE.sol\":\"GSE\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca\",\"dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167\",\"dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"src/governance/Bn254LibWrapper.sol\":{\"keccak256\":\"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c\",\"dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8\"]},\"src/governance/GSE.sol\":{\"keccak256\":\"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273\",\"dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU\"]},\"src/governance/Governance.sol\":{\"keccak256\":\"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf\",\"dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw\"]},\"src/governance/interfaces/IBn254LibWrapper.sol\":{\"keccak256\":\"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9\",\"dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej\"]},\"src/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff\",\"dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa\"]},\"src/governance/interfaces/IPayload.sol\":{\"keccak256\":\"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c\",\"dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin\"]},\"src/governance/libraries/AddressSnapshotLib.sol\":{\"keccak256\":\"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402\",\"dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp\"]},\"src/governance/libraries/CheckpointedUintLib.sol\":{\"keccak256\":\"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1\",\"dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q\"]},\"src/governance/libraries/ConfigurationLib.sol\":{\"keccak256\":\"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a\",\"dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy\"]},\"src/governance/libraries/DepositDelegationLib.sol\":{\"keccak256\":\"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb\",\"dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb\"]},\"src/governance/libraries/Errors.sol\":{\"keccak256\":\"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa\",\"dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv\"]},\"src/governance/libraries/ProposalLib.sol\":{\"keccak256\":\"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192\",\"dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT\"]},\"src/governance/libraries/compressed-data/Ballot.sol\":{\"keccak256\":\"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012\",\"dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM\"]},\"src/governance/libraries/compressed-data/Configuration.sol\":{\"keccak256\":\"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482\",\"dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv\"]},\"src/governance/libraries/compressed-data/Proposal.sol\":{\"keccak256\":\"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6\",\"dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN\"]},\"src/shared/libraries/BN254Lib.sol\":{\"keccak256\":\"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a\",\"dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52\"]},\"src/shared/libraries/CompressedTimeMath.sol\":{\"keccak256\":\"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3\",\"dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB\"]},\"src/shared/libraries/TimeMath.sol\":{\"keccak256\":\"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914\",\"dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"__owner","type":"address"},{"internalType":"contract IERC20","name":"_asset","type":"address"},{"internalType":"uint256","name":"_activationThreshold","type":"uint256"},{"internalType":"uint256","name":"_ejectionThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AddressSnapshotLib__CannotAddAddressZero"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"type":"error","name":"AddressSnapshotLib__IndexOutOfBounds"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"Delegation__InsufficientPower"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__AlreadyRegistered"},{"inputs":[{"internalType":"uint256","name":"existingPk1x","type":"uint256"},{"internalType":"uint256","name":"existingPk1y","type":"uint256"}],"type":"error","name":"GSE__CannotChangePublicKeys"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__FailedToRemove"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"type":"error","name":"GSE__FatalError"},{"inputs":[],"type":"error","name":"GSE__GovernanceAlreadySet"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InstanceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"GSE__InsufficientBalance"},{"inputs":[],"type":"error","name":"GSE__InvalidProofOfPossession"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__InvalidRollupAddress"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotLatestRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotRollup"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NotWithdrawer"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__NothingToExit"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"type":"error","name":"GSE__OutOfBounds"},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"type":"error","name":"GSE__ProofOfPossessionAlreadySeen"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"GSE__RollupAlreadyRegistered"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue"},{"inputs":[],"type":"error","name":"Governance__CheckpointedUintLib__NotInPast"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"oldDelegatee","type":"address","indexed":false},{"internalType":"address","name":"newDelegatee","type":"address","indexed":false}],"type":"event","name":"DelegateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"delegatee","type":"address","indexed":true},{"internalType":"uint256","name":"oldValue","type":"uint256","indexed":false},{"internalType":"uint256","name":"newValue","type":"uint256","indexed":false}],"type":"event","name":"DelegateVotesChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"instance","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"address","name":"withdrawer","type":"address","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ACTIVATION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BONUS_INSTANCE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EJECTION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_rollup","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addRollup"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_delegatee","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"delegate"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"address","name":"_withdrawer","type":"address"},{"internalType":"struct G1Point","name":"_publicKeyInG1","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"struct G2Point","name":"_publicKeyInG2","type":"tuple","components":[{"internalType":"uint256","name":"x0","type":"uint256"},{"internalType":"uint256","name":"x1","type":"uint256"},{"internalType":"uint256","name":"y0","type":"uint256"},{"internalType":"uint256","name":"y1","type":"uint256"}]},{"internalType":"struct G1Point","name":"_proofOfPossession","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bool","name":"_moveWithLatestRollup","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"effectiveBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdraw"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAttesterCountAtTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAttesterFromIndexAtTime","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"},{"internalType":"uint256[]","name":"_indices","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"getAttestersFromIndicesAtTime","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"getBonusInstanceAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"getConfig","outputs":[{"internalType":"struct AttesterConfig","name":"","type":"tuple","components":[{"internalType":"struct G1Point","name":"publicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"withdrawer","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"getDelegatee","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address[]","name":"_attesters","type":"address[]"}],"stateMutability":"view","type":"function","name":"getG1PublicKeysFromAddresses","outputs":[{"internalType":"struct G1Point[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getGovernance","outputs":[{"internalType":"contract Governance","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLatestRollup","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getLatestRollupAt","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_delegatee","type":"address"},{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPowerUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct G1Point","name":"_publicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}],"stateMutability":"view","type":"function","name":"getRegistrationDigest","outputs":[{"internalType":"struct G1Point","name":"","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_delegatee","type":"address"}],"stateMutability":"view","type":"function","name":"getVotingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_delegatee","type":"address"},{"internalType":"Timestamp","name":"_timestamp","type":"uint256"}],"stateMutability":"view","type":"function","name":"getVotingPowerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"getWithdrawer","outputs":[{"internalType":"address","name":"withdrawer","type":"address"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"},{"internalType":"address","name":"_attester","type":"address"}],"stateMutability":"view","type":"function","name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_instance","type":"address"}],"stateMutability":"view","type":"function","name":"isRollupRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hashedPK1","type":"bytes32"}],"stateMutability":"view","type":"function","name":"ownedPKs","outputs":[{"internalType":"bool","name":"isRegistered","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proofOfPossessionGasLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"contract IPayload","name":"_payload","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeWithLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract Governance","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setGovernance"},{"inputs":[{"internalType":"uint64","name":"_proofOfPossessionGasLimit","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setProofOfPossessionGasLimit"},{"inputs":[{"internalType":"address","name":"_instance","type":"address"}],"stateMutability":"view","type":"function","name":"supplyOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"vote"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"voteWithBonus"},{"inputs":[{"internalType":"address","name":"_attester","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addRollup(address)":{"details":"rollups only have access to the \"bonus instance\" while they are the most recent rollup.The GSE only supports adding rollups, not removing them. If a rollup becomes compromised, governance can simply add a new rollup and the bonus instance mechanism ensures a smooth transition by allowing the new rollup to immediately inherit attesters.Beware that multiple calls to `addRollup` at the same `block.timestamp` will override each other and only the last will be in the `rollups`.","params":{"_rollup":"- The address of the rollup to add"}},"delegate(address,address,address)":{"details":"The delegatee may use this voting power to vote on proposals in Governance. Note that voting power for a delegatee is timestamped. The delegatee must have this power before a proposal becomes \"active\" in order to use it. See `Governance.getProposalState` for more details.","params":{"_attester":"- The address of the attester to delegate on behalf of","_delegatee":"- The delegatee that should receive the power","_instance":"- The address of the rollup instance (or bonus instance address) to which the `_attester` deposit is pledged."}},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"details":"msg.sender must be a registered rollup.Transfers ASSET from msg.sender to the GSE, and then into Governance.if _moveWithLatestRollup is true, then msg.sender must be the latest rollup.An attester configuration is registered globally to avoid BLS troubles when moving stake. Suppose the registered rollups are A, then B, then C, so C's effective attesters are those associated with C and the bonus address. Alice may come along now and deposit on A or B, with _moveWithLatestRollup=false in either case. For depositing into C, she can deposit *either* with _moveWithLatestRollup = true OR false. If she deposits with _moveWithLatestRollup = false, then she is associated with C's address. If she deposits with _moveWithLatestRollup = true, then she is associated with the bonus address. Suppose she deposits with _moveWithLatestRollup = true, and a new rollup D is added to the rollups. Then her stake moves to D, and she is in the effective attesters of D.","params":{"_attester":"- The attester address on behalf of which the deposit is made.","_moveWithLatestRollup":"- Whether to deposit into the specific instance, or the bonus instance","_proofOfPossession":"- A proof of possessions for the private key corresponding _publicKey in G1 and G2","_publicKeyInG1":"- BLS public key for the attester in G1","_publicKeyInG2":"- BLS public key for the attester in G2","_withdrawer":"- Address which the user wish to use to initiate a withdraw for the `_attester` and to update delegation with. The withdrawals are enforced by the rollup to which it is controlled, so it is practically a value for the rollup to use, meaning dishonest rollup can reject withdrawal attempts."}},"effectiveBalanceOf(address,address)":{"params":{"_attester":"- The attester to look at","_instance":"- The instance to look at"},"returns":{"_0":"The effective balance of the attester at the instance"}},"finalizeWithdraw(uint256)":{"details":"Will be a no operation if the withdrawal is already collected.","params":{"_withdrawalId":"- The id of the withdrawal"}},"getAttesterCountAtTime(address,uint256)":{"params":{"_instance":"- The instance to look at","_timestamp":"- The timestamp to lookup"},"returns":{"_0":"The number of effective attesters at the instance at the time of `_timestamp`"}},"getG1PublicKeysFromAddresses(address[])":{"params":{"_attesters":"- The attesters to lookup"},"returns":{"_0":"The G1 public keys of the attesters"}},"getLatestRollup()":{"returns":{"_0":"The address of the latest instance"}},"getLatestRollupAt(uint256)":{"params":{"_timestamp":"- The timestamp to lookup"},"returns":{"_0":"The address of the latest instance at the time of lookup"}},"getRegistrationDigest((uint256,uint256))":{"params":{"_publicKey":"- The public key to get the registration digest of"},"returns":{"_0":"The registration digest of the public key. Sign and submit as a proof of possession."}},"isRegistered(address,address)":{"params":{"_attester":"- The attester to lookup","_instance":"- The instance to look at"},"returns":{"_0":"True if the `_attester` is in the set of `_instance`, false otherwise"}},"owner()":{"details":"Returns the address of the current owner."},"proposeWithLock(address,address)":{"details":"It is required to expose this on the GSE, since it is assumed that only the GSE can hold power in Governance (see the comment at the top of Governance.sol).Transfers governance's configured `lockAmount` of ASSET from msg.sender to the GSE, and then into Governance.Immediately creates a withdrawal from Governance for the `lockAmount`.The delay until the withdrawal may be finalized is equal to the current `lockDelay` in Governance.","params":{"_payload":"- The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.","_to":"- The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)"},"returns":{"_0":"The id of the proposal"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"vote(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on","_support":"- True if supporting the proposal, false otherwise."}},"voteWithBonus(uint256,uint256,bool)":{"params":{"_amount":"- The amount of voting power to use in the vote In the gov, it is possible to do a vote with partial power","_proposalId":"- The id of the proposal in the governance to vote on"}},"withdraw(address,uint256)":{"details":"To be used by a rollup to withdraw funds from the GSE. For example if slashing or just withdrawing events happen, a rollup can use this function to withdraw the funds. It looks in both the rollup instance and the bonus address for the attester.Note that all funds are returned to the rollup, so for slashing the rollup itself must address the problem of \"what to do\" with the funds. And it must look at the returned amount withdrawn and the bool.","params":{"_amount":"- The amount of staking asset to withdraw. Has 1:1 ratio with voting power.","_attester":"- The attester to withdraw from."},"returns":{"_0":"The actual amount withdrawn.","_1":"True if attester is removed from set, false otherwise","_2":"The id of the withdrawal at the governance"}}},"version":1},"userdoc":{"kind":"user","methods":{"BONUS_INSTANCE_ADDRESS()":{"notice":"Create a special \"bonus\" address for use by the latest rollup. This is a convenience mechanism to allow attesters to always be staked on the latest rollup. As far as terminology, the GSE tracks deposits and voting/delegation data for \"instances\", and an \"instance\" is either the address of a \"true\" rollup contract which was added via `addRollup`, or (ONLY IN THIS CONTRACT) this special \"bonus\" address, which has its own accounting. NB: in every other context, \"instance\" refers broadly to a specific instance of an aztec rollup contract (possibly inclusive of its family of related contracts e.g. Inbox, Outbox, etc.) Thus, this bonus address appears in `delegation` and `instances`, and from the perspective of the GSE, it is an instance (though it can never be in the list of rollups). Lower in the code, we use \"rollup\" if we know we're talking about a rollup (often msg.sender), and \"instance\" if we are talking about about either a rollup instance or the bonus instance. The latest rollup according to `rollups` may use the attesters and voting power from the BONUS_INSTANCE_ADDRESS as a \"bonus\" to their own. One invariant of the GSE is that the attesters available to any rollup instance must form a set. i.e. there must be no duplicates. Thus, for the latest rollup, there are two \"buckets\" of attesters available: - the attesters that are associated with the rollup's address - the attesters that are associated with the BONUS_INSTANCE_ADDRESS The GSE ensures that: - each bucket individually is a set - when you add these two buckets together, it is a set. For a rollup that is no longer the latest, the attesters available to it are the attesters that are associated with the rollup's address. In effect, when a rollup goes from being the latest to not being the latest, it loses all attesters that were associated with the bonus instance. In this way, the \"effective\" attesters/balance/etc for a rollup (at a point in time) is: - the rollup's bucket and the bonus bucket if the rollup was the latest at that point in time - only the rollup's bucket if the rollup was not the latest at that point in time Note further, that operations like deposit and withdraw are initiated by a rollup, but the \"affected instance\" address will be either the rollup's address or the BONUS_INSTANCE_ADDRESS; we will typically need to look at both instances to know what to do. NB: in a large way, the BONUS_INSTANCE_ADDRESS is the entire point of the GSE, otherwise the rollups would've managed their own attesters/delegation/etc."},"addRollup(address)":{"notice":"Adds another rollup to the instances, which is the new latest rollup. Only callable by the owner (usually governance) and only when the rollup is not already in the set"},"delegate(address,address,address)":{"notice":"Delegates the voting power of `_attester` at `_instance` to `_delegatee` Only callable by the `withdrawer` for the given `_attester` at the given `_instance`. This is to ensure that the depositor in poor mans delegation; listing another entity as the `attester`, still controls his voting power, even if someone else is running the node. Separately, it makes it simpler to use cold-storage for more impactful actions."},"deposit(address,address,(uint256,uint256),(uint256,uint256,uint256,uint256),(uint256,uint256),bool)":{"notice":"Deposits a new attester"},"effectiveBalanceOf(address,address)":{"notice":"Get the effective balance of the attester at the instance. The effective balance is the balance of the attester at the specific instance or at the bonus if the instance is the latest rollup and he was not at the specific. We can do this as an `or` since the attester may only be active at one of them."},"finalizeWithdraw(uint256)":{"notice":"A helper function to make it easy for users of the GSE to finalize a pending exit in the governance. Kept in here since it is already connected to Governance: we don't want the rollup to have to deal with links to gov etc."},"getAttesterCountAtTime(address,uint256)":{"notice":"Get the number of effective attesters at the instance at the time of `_timestamp` (including the bonus instance)"},"getG1PublicKeysFromAddresses(address[])":{"notice":"Get the G1 public keys of the attesters NOTE: this function does NOT check if the attesters are CURRENTLY ACTIVE."},"getLatestRollup()":{"notice":"Get the address of latest instance"},"getLatestRollupAt(uint256)":{"notice":"Get the address of the instance that was latest at time `_timestamp`"},"getRegistrationDigest((uint256,uint256))":{"notice":"Get the registration digest of a public key by hashing the the public key to a point on the curve which may subsequently be signed by the corresponding private key."},"isRegistered(address,address)":{"notice":"Lookup if the `_attester` is in the `_instance` attester set"},"proposeWithLock(address,address)":{"notice":"Make a proposal to Governance via `Governance.proposeWithLock`"},"vote(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to `msg.sender`"},"voteWithBonus(uint256,uint256,bool)":{"notice":"Votes at the governance using the power delegated to the bonus instance. Only callable by the rollup that was the latest rollup at the time of the proposal."},"withdraw(address,uint256)":{"notice":"Withdraws at least the amount specified. If the leftover balance is less than the minimum deposit, the entire balance is withdrawn."}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/governance/GSE.sol":"GSE"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b","urls":["bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca","dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f","urls":["bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167","dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"src/governance/Bn254LibWrapper.sol":{"keccak256":"0xea39571de45fe0fec82d9e760998677eb2432e08c6cdb00c41efa58caf56e607","urls":["bzz-raw://1e470b821f3d87fa0c988c5f23a8deed3849bffd2527b3b4ee137a90e0c1264c","dweb:/ipfs/QmW3M4HyRLDruV5AYXCKicFCiiczmwnSTtnwVKUnQSm7a8"],"license":"Apache-2.0"},"src/governance/GSE.sol":{"keccak256":"0xc19fa4868d78030e2411dd5cef6d0da09645ade1d1ea0c4374b284a89feb722a","urls":["bzz-raw://d06396c249566d0e9de5d34eade2bf27c4d583005c0129787bf6c413dcd9e273","dweb:/ipfs/QmcimKKiV9KqobS5wzPsKYzyYu5WezCF3gyHkekf5tjrUU"],"license":"Apache-2.0"},"src/governance/Governance.sol":{"keccak256":"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5","urls":["bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf","dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw"],"license":"Apache-2.0"},"src/governance/interfaces/IBn254LibWrapper.sol":{"keccak256":"0xdd0a3de8b8ff67cf2bf090d04b4a37aa6d604f402db3328387d2466d2354464a","urls":["bzz-raw://daef0234547509cd7ae3a7babf0e50a8d1ca2894f1817e3e2409a50fd32947b9","dweb:/ipfs/QmbwSedqnBfsqRnUq8XcXzoeoyhZTXJWJ9rpJn61BAJfej"],"license":"Apache-2.0"},"src/governance/interfaces/IGovernance.sol":{"keccak256":"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005","urls":["bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff","dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa"],"license":"Apache-2.0"},"src/governance/interfaces/IPayload.sol":{"keccak256":"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3","urls":["bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c","dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin"],"license":"Apache-2.0"},"src/governance/libraries/AddressSnapshotLib.sol":{"keccak256":"0x1006e58059e0a1f0fef102f2f11f5649dffc7f2eb066fce51845e65a064f4210","urls":["bzz-raw://de385ab9eb3bb66d7be1218b49ae9bba7d88797bcb375b9a7481a209d303a402","dweb:/ipfs/QmZe6DTv3cACfdXNSMhbMhoefg31LW3uLxHLDC7nZhb4Yp"],"license":"Apache-2.0"},"src/governance/libraries/CheckpointedUintLib.sol":{"keccak256":"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4","urls":["bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1","dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q"],"license":"Apache-2.0"},"src/governance/libraries/ConfigurationLib.sol":{"keccak256":"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149","urls":["bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a","dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy"],"license":"Apache-2.0"},"src/governance/libraries/DepositDelegationLib.sol":{"keccak256":"0x37fbca65ccabec9d901bd71d684dceec7c59fa5a05438fd209ea0d5e16e764c0","urls":["bzz-raw://e42f2622978abc3ac84223a6b206201898d0269d20bf81539636c0999a0db9eb","dweb:/ipfs/QmW4BgTjR6BuPxwxreKarUeK1u8gx3p9yFdDD4EsC5hkyb"],"license":"Apache-2.0"},"src/governance/libraries/Errors.sol":{"keccak256":"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4","urls":["bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa","dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv"],"license":"Apache-2.0"},"src/governance/libraries/ProposalLib.sol":{"keccak256":"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90","urls":["bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192","dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Ballot.sol":{"keccak256":"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d","urls":["bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012","dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Configuration.sol":{"keccak256":"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9","urls":["bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482","dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Proposal.sol":{"keccak256":"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a","urls":["bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6","dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN"],"license":"Apache-2.0"},"src/shared/libraries/BN254Lib.sol":{"keccak256":"0x0c3a5b7dabde2f5c81f19e1a4a212308a8636b5bb4a16bb1a518d58ef4feb6f5","urls":["bzz-raw://870be6219c7081ed081cee2fa9ad1e7f3efff623ae1a59aed966f2bdcee65b7a","dweb:/ipfs/QmNzohb1TazCgaT1e55CMDuuG7AHdGrGA6jvT4wzxdAM52"],"license":"Apache-2.0"},"src/shared/libraries/CompressedTimeMath.sol":{"keccak256":"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1","urls":["bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3","dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB"],"license":"Apache-2.0"},"src/shared/libraries/TimeMath.sol":{"keccak256":"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f","urls":["bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914","dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3"],"license":"Apache-2.0"}},"version":1},"id":131}
|