diff --git a/lib/chainsync/chainsync/db/hyperdrive/schema.py b/lib/chainsync/chainsync/db/hyperdrive/schema.py index 9af53a7b01..75bdff38ba 100644 --- a/lib/chainsync/chainsync/db/hyperdrive/schema.py +++ b/lib/chainsync/chainsync/db/hyperdrive/schema.py @@ -30,6 +30,7 @@ class PoolConfig(Base): baseToken: Mapped[Union[str, None]] = mapped_column(String, default=None) initialSharePrice: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) minimumShareReserves: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) + minimumTransactionAmount: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) positionDuration: Mapped[Union[int, None]] = mapped_column(Integer, default=None) checkpointDuration: Mapped[Union[int, None]] = mapped_column(Integer, default=None) timeStretch: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) @@ -70,6 +71,7 @@ class PoolInfo(Base): bondReserves: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) lpTotalSupply: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) sharePrice: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) + shareAdjustment: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) lpSharePrice: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) longExposure: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) longsOutstanding: Mapped[Union[Decimal, None]] = mapped_column(FIXED_NUMERIC, default=None) diff --git a/lib/ethpy/ethpy/hyperdrive/api.py b/lib/ethpy/ethpy/hyperdrive/api.py index a1b492c1d5..ed7b69f228 100644 --- a/lib/ethpy/ethpy/hyperdrive/api.py +++ b/lib/ethpy/ethpy/hyperdrive/api.py @@ -178,36 +178,37 @@ def spot_price(self) -> FixedPoint: """ self._ensure_current_state() pool_config_str = PoolConfig( - base_token=self._contract_pool_config["baseToken"], - initial_share_price=str(self._contract_pool_config["initialSharePrice"]), - minimum_share_reserves=str(self._contract_pool_config["minimumShareReserves"]), - position_duration=str(self._contract_pool_config["positionDuration"]), - checkpoint_duration=str(self._contract_pool_config["checkpointDuration"]), - time_stretch=str(self._contract_pool_config["timeStretch"]), + baseToken=self._contract_pool_config["baseToken"], + initialSharePrice=str(self._contract_pool_config["initialSharePrice"]), + minimumShareReserves=str(self._contract_pool_config["minimumShareReserves"]), + minimumTransactionAmount=str(self._contract_pool_config["minimumTransactionAmount"]), + positionDuration=str(self._contract_pool_config["positionDuration"]), + checkpointDuration=str(self._contract_pool_config["checkpointDuration"]), + timeStretch=str(self._contract_pool_config["timeStretch"]), governance=self._contract_pool_config["governance"], - fee_collector=self._contract_pool_config["feeCollector"], - fees=Fees( + feeCollector=self._contract_pool_config["feeCollector"], + Fees=Fees( curve=str(self._contract_pool_config["fees"][0]), flat=str(self._contract_pool_config["fees"][1]), governance=str(self._contract_pool_config["fees"][2]), ), - oracle_size=str(self._contract_pool_config["oracleSize"]), - update_gap=str(self._contract_pool_config["updateGap"]), + oracleSize=str(self._contract_pool_config["oracleSize"]), + updateGap=str(self._contract_pool_config["updateGap"]), ) pool_info_str = PoolInfo( - share_reserves=str(self._contract_pool_info["shareReserves"]), - bond_reserves=str(self._contract_pool_info["bondReserves"]), - lp_total_supply=str(self._contract_pool_info["lpTotalSupply"]), - share_price=str(self._contract_pool_info["sharePrice"]), - longs_outstanding=str(self._contract_pool_info["longsOutstanding"]), - long_average_maturity_time=str(self._contract_pool_info["longAverageMaturityTime"]), - shorts_outstanding=str(self._contract_pool_info["shortsOutstanding"]), - short_average_maturity_time=str(self._contract_pool_info["shortAverageMaturityTime"]), - short_base_volume="0", # TODO: remove this from Pyperdrive - withdrawal_shares_ready_to_withdraw=str(self._contract_pool_info["withdrawalSharesReadyToWithdraw"]), - withdrawal_shares_proceeds=str(self._contract_pool_info["withdrawalSharesProceeds"]), - lp_share_price=str(self._contract_pool_info["lpSharePrice"]), - long_exposure=str(self._contract_pool_info["longExposure"]), + shareReserves=str(self._contract_pool_info["shareReserves"]), + shareAdjustment=str(self._contract_pool_info["shareAdjustment"]), + bondReserves=str(self._contract_pool_info["bondReserves"]), + lpTotalSupply=str(self._contract_pool_info["lpTotalSupply"]), + sharePrice=str(self._contract_pool_info["sharePrice"]), + longsOutstanding=str(self._contract_pool_info["longsOutstanding"]), + longAverageMaturityTime=str(self._contract_pool_info["longAverageMaturityTime"]), + shortsOutstanding=str(self._contract_pool_info["shortsOutstanding"]), + shortAverageMaturityTime=str(self._contract_pool_info["shortAverageMaturityTime"]), + withdrawalSharesReadyToWithdraw=str(self._contract_pool_info["withdrawalSharesReadyToWithdraw"]), + withdrawalSharesProceeds=str(self._contract_pool_info["withdrawalSharesProceeds"]), + lpSharePrice=str(self._contract_pool_info["lpSharePrice"]), + longExposure=str(self._contract_pool_info["longExposure"]), ) spot_price = pyperdrive.get_spot_price(pool_config_str, pool_info_str) # pylint: disable=no-member return FixedPoint(scaled_value=int(spot_price)) @@ -587,39 +588,40 @@ def get_max_long(self, budget: FixedPoint) -> FixedPoint: The maximum long as a FixedPoint representation of a Solidity uint256 value. """ self._ensure_current_state() - # pylint: disable=no-member pool_config_str = PoolConfig( - base_token=self._contract_pool_config["baseToken"], - initial_share_price=str(self._contract_pool_config["initialSharePrice"]), - minimum_share_reserves=str(self._contract_pool_config["minimumShareReserves"]), - position_duration=str(self._contract_pool_config["positionDuration"]), - checkpoint_duration=str(self._contract_pool_config["checkpointDuration"]), - time_stretch=str(self._contract_pool_config["timeStretch"]), + baseToken=self._contract_pool_config["baseToken"], + initialSharePrice=str(self._contract_pool_config["initialSharePrice"]), + minimumShareReserves=str(self._contract_pool_config["minimumShareReserves"]), + minimumTransactionAmount=str(self._contract_pool_config["minimumTransactionAmount"]), + positionDuration=str(self._contract_pool_config["positionDuration"]), + checkpointDuration=str(self._contract_pool_config["checkpointDuration"]), + timeStretch=str(self._contract_pool_config["timeStretch"]), governance=self._contract_pool_config["governance"], - fee_collector=self._contract_pool_config["feeCollector"], - fees=Fees( + feeCollector=self._contract_pool_config["feeCollector"], + Fees=Fees( curve=str(self._contract_pool_config["fees"][0]), flat=str(self._contract_pool_config["fees"][1]), governance=str(self._contract_pool_config["fees"][2]), ), - oracle_size=str(self._contract_pool_config["oracleSize"]), - update_gap=str(self._contract_pool_config["updateGap"]), + oracleSize=str(self._contract_pool_config["oracleSize"]), + updateGap=str(self._contract_pool_config["updateGap"]), ) pool_info_str = PoolInfo( - share_reserves=str(self._contract_pool_info["shareReserves"]), - bond_reserves=str(self._contract_pool_info["bondReserves"]), - lp_total_supply=str(self._contract_pool_info["lpTotalSupply"]), - share_price=str(self._contract_pool_info["sharePrice"]), - longs_outstanding=str(self._contract_pool_info["longsOutstanding"]), - long_average_maturity_time=str(self._contract_pool_info["longAverageMaturityTime"]), - shorts_outstanding=str(self._contract_pool_info["shortsOutstanding"]), - short_average_maturity_time=str(self._contract_pool_info["shortAverageMaturityTime"]), - short_base_volume="0", # TODO: remove this from Pyperdrive - withdrawal_shares_ready_to_withdraw=str(self._contract_pool_info["withdrawalSharesReadyToWithdraw"]), - withdrawal_shares_proceeds=str(self._contract_pool_info["withdrawalSharesProceeds"]), - lp_share_price=str(self._contract_pool_info["lpSharePrice"]), - long_exposure=str(self._contract_pool_info["longExposure"]), + shareReserves=str(self._contract_pool_info["shareReserves"]), + shareAdjustment=str(self._contract_pool_info["shareAdjustment"]), + bondReserves=str(self._contract_pool_info["bondReserves"]), + lpTotalSupply=str(self._contract_pool_info["lpTotalSupply"]), + sharePrice=str(self._contract_pool_info["sharePrice"]), + longsOutstanding=str(self._contract_pool_info["longsOutstanding"]), + longAverageMaturityTime=str(self._contract_pool_info["longAverageMaturityTime"]), + shortsOutstanding=str(self._contract_pool_info["shortsOutstanding"]), + shortAverageMaturityTime=str(self._contract_pool_info["shortAverageMaturityTime"]), + withdrawalSharesReadyToWithdraw=str(self._contract_pool_info["withdrawalSharesReadyToWithdraw"]), + withdrawalSharesProceeds=str(self._contract_pool_info["withdrawalSharesProceeds"]), + lpSharePrice=str(self._contract_pool_info["lpSharePrice"]), + longExposure=str(self._contract_pool_info["longExposure"]), ) + # pylint: disable=no-member max_long = pyperdrive.get_max_long( pool_config_str, pool_info_str, @@ -643,44 +645,46 @@ def get_max_short(self, budget: FixedPoint) -> FixedPoint: The maximum long as a FixedPoint representation of a Solidity uint256 value. """ self._ensure_current_state() - # pylint: disable=no-member pool_config_str = PoolConfig( - base_token=self._contract_pool_config["baseToken"], - initial_share_price=str(self._contract_pool_config["initialSharePrice"]), - minimum_share_reserves=str(self._contract_pool_config["minimumShareReserves"]), - position_duration=str(self._contract_pool_config["positionDuration"]), - checkpoint_duration=str(self._contract_pool_config["checkpointDuration"]), - time_stretch=str(self._contract_pool_config["timeStretch"]), + baseToken=self._contract_pool_config["baseToken"], + initialSharePrice=str(self._contract_pool_config["initialSharePrice"]), + minimumShareReserves=str(self._contract_pool_config["minimumShareReserves"]), + minimumTransactionAmount=str(self._contract_pool_config["minimumTransactionAmount"]), + positionDuration=str(self._contract_pool_config["positionDuration"]), + checkpointDuration=str(self._contract_pool_config["checkpointDuration"]), + timeStretch=str(self._contract_pool_config["timeStretch"]), governance=self._contract_pool_config["governance"], - fee_collector=self._contract_pool_config["feeCollector"], - fees=Fees( + feeCollector=self._contract_pool_config["feeCollector"], + Fees=Fees( curve=str(self._contract_pool_config["fees"][0]), flat=str(self._contract_pool_config["fees"][1]), governance=str(self._contract_pool_config["fees"][2]), ), - oracle_size=str(self._contract_pool_config["oracleSize"]), - update_gap=str(self._contract_pool_config["updateGap"]), + oracleSize=str(self._contract_pool_config["oracleSize"]), + updateGap=str(self._contract_pool_config["updateGap"]), ) pool_info_str = PoolInfo( - share_reserves=str(self._contract_pool_info["shareReserves"]), - bond_reserves=str(self._contract_pool_info["bondReserves"]), - lp_total_supply=str(self._contract_pool_info["lpTotalSupply"]), - share_price=str(self._contract_pool_info["sharePrice"]), - longs_outstanding=str(self._contract_pool_info["longsOutstanding"]), - long_average_maturity_time=str(self._contract_pool_info["longAverageMaturityTime"]), - shorts_outstanding=str(self._contract_pool_info["shortsOutstanding"]), - short_average_maturity_time=str(self._contract_pool_info["shortAverageMaturityTime"]), - short_base_volume="0", # TODO: remove this from Pyperdrive - withdrawal_shares_ready_to_withdraw=str(self._contract_pool_info["withdrawalSharesReadyToWithdraw"]), - withdrawal_shares_proceeds=str(self._contract_pool_info["withdrawalSharesProceeds"]), - lp_share_price=str(self._contract_pool_info["lpSharePrice"]), - long_exposure=str(self._contract_pool_info["longExposure"]), + shareReserves=str(self._contract_pool_info["shareReserves"]), + shareAdjustment=str(self._contract_pool_info["shareAdjustment"]), + bondReserves=str(self._contract_pool_info["bondReserves"]), + lpTotalSupply=str(self._contract_pool_info["lpTotalSupply"]), + sharePrice=str(self._contract_pool_info["sharePrice"]), + longsOutstanding=str(self._contract_pool_info["longsOutstanding"]), + longAverageMaturityTime=str(self._contract_pool_info["longAverageMaturityTime"]), + shortsOutstanding=str(self._contract_pool_info["shortsOutstanding"]), + shortAverageMaturityTime=str(self._contract_pool_info["shortAverageMaturityTime"]), + withdrawalSharesReadyToWithdraw=str(self._contract_pool_info["withdrawalSharesReadyToWithdraw"]), + withdrawalSharesProceeds=str(self._contract_pool_info["withdrawalSharesProceeds"]), + lpSharePrice=str(self._contract_pool_info["lpSharePrice"]), + longExposure=str(self._contract_pool_info["longExposure"]), ) + # pylint: disable=no-member max_short = pyperdrive.get_max_short( pool_config_str, pool_info_str, str(budget.scaled_value), - pool_info_str.share_price, + pool_info_str.sharePrice, + checkpoint_exposure=str(self.latest_checkpoint["longExposure"].scaled_value), maybe_conservative_price=None, maybe_max_iterations=None, ) diff --git a/lib/ethpy/ethpy/hyperdrive/interface.py b/lib/ethpy/ethpy/hyperdrive/interface.py index 62323ef487..e9bcd174df 100644 --- a/lib/ethpy/ethpy/hyperdrive/interface.py +++ b/lib/ethpy/ethpy/hyperdrive/interface.py @@ -49,7 +49,7 @@ def process_hyperdrive_pool_config(pool_config: dict[str, Any], hyperdrive_addre The hyperdrive pool config with modified types. """ # convert values to FixedPoint - fixedpoint_keys = ["initialSharePrice", "minimumShareReserves", "timeStretch"] + fixedpoint_keys = ["initialSharePrice", "minimumShareReserves", "timeStretch", "minimumTransactionAmount"] for key in pool_config: if key in fixedpoint_keys: pool_config[key] = FixedPoint(scaled_value=pool_config[key]) diff --git a/lib/ethpy/ethpy/hyperdrive/interface_test.py b/lib/ethpy/ethpy/hyperdrive/interface_test.py new file mode 100644 index 0000000000..12ad618996 --- /dev/null +++ b/lib/ethpy/ethpy/hyperdrive/interface_test.py @@ -0,0 +1,33 @@ +"""Tests for hyperdrive/api.py""" +from __future__ import annotations + +from typing import cast + +from eth_typing import URI +from ethpy import EthConfig +from ethpy.base.transactions import smart_contract_read +from ethpy.hyperdrive.addresses import HyperdriveAddresses +from ethpy.test_fixtures.local_chain import LocalHyperdriveChain +from web3 import HTTPProvider + +from .get_web3_and_hyperdrive_contracts import get_web3_and_hyperdrive_contracts + +# pylint: disable=too-many-locals + + +class TestHyperdriveInterface: + """Tests for the low-level hyperdrive interface functions.""" + + def test_get_pool_config(self, local_hyperdrive_chain: LocalHyperdriveChain): + """Checks that the Hyperdrive smart contract function getPoolConfig works. + + All arguments are fixtures. + """ + uri: URI | None = cast(HTTPProvider, local_hyperdrive_chain.web3.provider).endpoint_uri + rpc_uri = uri if uri else URI("http://localhost:8545") + abi_dir = "./packages/hyperdrive/src/abis" + hyperdrive_contract_addresses: HyperdriveAddresses = local_hyperdrive_chain.hyperdrive_contract_addresses + eth_config = EthConfig(artifacts_uri="not used", rpc_uri=rpc_uri, abi_dir=abi_dir) + _, _, hyperdrive_contract = get_web3_and_hyperdrive_contracts(eth_config, hyperdrive_contract_addresses) + pool_config = smart_contract_read(hyperdrive_contract, "getPoolConfig") + assert pool_config is not None diff --git a/lib/ethpy/ethpy/test_fixtures/deploy_hyperdrive.py b/lib/ethpy/ethpy/test_fixtures/deploy_hyperdrive.py index a91ac01d45..c487e5940b 100644 --- a/lib/ethpy/ethpy/test_fixtures/deploy_hyperdrive.py +++ b/lib/ethpy/ethpy/test_fixtures/deploy_hyperdrive.py @@ -1,4 +1,8 @@ """Functions to initialize hyperdrive using web3""" +from __future__ import annotations + +from dataclasses import fields, is_dataclass +from typing import Any from eth_account.account import Account from eth_account.signers.local import LocalAccount @@ -12,6 +16,7 @@ smart_contract_transact, ) from fixedpointmath import FixedPoint +from hypertypes.IHyperdriveTypes import Fees, PoolConfig from web3 import Web3 from web3.contract.contract import Contract @@ -20,13 +25,35 @@ # initial hyperdrive conditions +def _dataclass_to_tuple(instance: Any) -> tuple: + """Resursively convert the input Dataclass to a tuple. + + Iterate over the fields of the dataclass and compiles them into a tuple. + Check if the type of a field is also a dataclass, and if so, recursively convert it to a tuple. + This method preserves the attribute ordering. + + Arguments + --------- + instance : dataclass + A dataclass, whose fields could contain other dataclasses. + + Returns + ------- + tuple + A nested tuple of all dataclass fields. + """ + if not is_dataclass(instance): + return instance + return tuple(_dataclass_to_tuple(getattr(instance, field.name)) for field in fields(instance)) + + # Following solidity implementation here, so matching function name def _calculateTimeStretch(apr: int) -> int: # pylint: disable=invalid-name """Helper function mirroring solidity calculateTimeStretch Arguments --------- - apr: int + apr : int The scaled input apr Returns @@ -184,6 +211,7 @@ def deploy_and_initialize_hyperdrive( # Initial hyperdrive settings initial_share_price = FixedPoint(1).scaled_value minimum_share_reserves = FixedPoint(10).scaled_value + minimum_transaction_amount = FixedPoint("0.001").scaled_value position_duration = 604800 # 1 week checkpoint_duration = 3600 # 1 hour time_stretch = _calculateTimeStretch(FixedPoint("0.05").scaled_value) @@ -204,22 +232,24 @@ def deploy_and_initialize_hyperdrive( # Call factory to make hyperdrive market # Some of these pool info configurations don't do anything, as the factory is overwriting them - pool_config = ( + # Using the Pypechain generated HyperdriveTypes for PoolConfig to ensure the ordering & type safety + pool_config = PoolConfig( base_token_contract.address, initial_share_price, minimum_share_reserves, + minimum_transaction_amount, position_duration, checkpoint_duration, time_stretch, deploy_account_addr, # governance, overwritten by factory deploy_account_addr, # feeCollector, overwritten by factory - (0, 0, 0), # fees, overwritten by factory + Fees(0, 0, 0), # fees, overwritten by factory oracle_size, # oracleSize update_gap, ) # Function arguments fn_args = ( - pool_config, + _dataclass_to_tuple(pool_config), [], # new bytes[](0) initial_contribution, initial_fixed_rate, # fixedRate diff --git a/lib/hyperdrive_types/README.md b/lib/hypertypes/README.md similarity index 88% rename from lib/hyperdrive_types/README.md rename to lib/hypertypes/README.md index 2adf61efaf..c53a7fc7a9 100644 --- a/lib/hyperdrive_types/README.md +++ b/lib/hypertypes/README.md @@ -9,5 +9,5 @@ sh scripts/build_type_files.sh path/to/ABIs num_chars_per_line You can then pip install the package from the project root with ```bash -pip install -e lib/hyperdrive_types +pip install -e lib/hypertypes[base] ``` diff --git a/lib/hyperdrive_types/hyperdrive_types/ERC20MintableContract.py b/lib/hypertypes/hypertypes/ERC20MintableContract.py similarity index 99% rename from lib/hyperdrive_types/hyperdrive_types/ERC20MintableContract.py rename to lib/hypertypes/hypertypes/ERC20MintableContract.py index 424d01c211..a2fba10b8d 100644 --- a/lib/hyperdrive_types/hyperdrive_types/ERC20MintableContract.py +++ b/lib/hypertypes/hypertypes/ERC20MintableContract.py @@ -21,6 +21,7 @@ class ERC20MintableAllowanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, owner: str, spender: str) -> "ERC20MintableAllowanceContractFunction": super().__call__(owner, spender) return self @@ -34,6 +35,7 @@ class ERC20MintableApproveContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, spender: str, amount: int) -> "ERC20MintableApproveContractFunction": super().__call__(spender, amount) return self @@ -47,6 +49,7 @@ class ERC20MintableBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, account: str) -> "ERC20MintableBalanceOfContractFunction": super().__call__(account) return self @@ -60,6 +63,7 @@ class ERC20MintableBurnContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, amount: int, destination: str | None = None) -> "ERC20MintableBurnContractFunction": if all([destination is None]): super().__call__(amount) @@ -78,6 +82,7 @@ class ERC20MintableDecimalsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "ERC20MintableDecimalsContractFunction": super().__call__() return self @@ -91,6 +96,7 @@ class ERC20MintableDecreaseAllowanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, spender: str, subtractedValue: int) -> "ERC20MintableDecreaseAllowanceContractFunction": super().__call__(spender, subtractedValue) return self @@ -104,6 +110,7 @@ class ERC20MintableIncreaseAllowanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, spender: str, addedValue: int) -> "ERC20MintableIncreaseAllowanceContractFunction": super().__call__(spender, addedValue) return self @@ -117,6 +124,7 @@ class ERC20MintableMintContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, amount: int, destination: str | None = None) -> "ERC20MintableMintContractFunction": if all([destination is not None]): super().__call__(destination, amount) @@ -135,6 +143,7 @@ class ERC20MintableNameContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "ERC20MintableNameContractFunction": super().__call__() return self @@ -148,6 +157,7 @@ class ERC20MintableSymbolContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "ERC20MintableSymbolContractFunction": super().__call__() return self @@ -161,6 +171,7 @@ class ERC20MintableTotalSupplyContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "ERC20MintableTotalSupplyContractFunction": super().__call__() return self @@ -174,6 +185,7 @@ class ERC20MintableTransferContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, to: str, amount: int) -> "ERC20MintableTransferContractFunction": super().__call__(to, amount) return self @@ -187,6 +199,7 @@ class ERC20MintableTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _from: str, to: str, amount: int) -> "ERC20MintableTransferFromContractFunction": super().__call__(_from, to, amount) return self diff --git a/lib/hyperdrive_types/hyperdrive_types/ERC20MintableTypes.py b/lib/hypertypes/hypertypes/ERC20MintableTypes.py similarity index 100% rename from lib/hyperdrive_types/hyperdrive_types/ERC20MintableTypes.py rename to lib/hypertypes/hypertypes/ERC20MintableTypes.py diff --git a/lib/hyperdrive_types/hyperdrive_types/ERC4626HyperdriveDeployerContract.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py similarity index 99% rename from lib/hyperdrive_types/hyperdrive_types/ERC4626HyperdriveDeployerContract.py rename to lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py index e375cda017..54277e238f 100644 --- a/lib/hyperdrive_types/hyperdrive_types/ERC4626HyperdriveDeployerContract.py +++ b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerContract.py @@ -21,6 +21,7 @@ class ERC4626HyperdriveDeployerDeployContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, PoolConfig: tuple, _dataProvider: str, _linkerCodeHash: bytes, _linkerFactory: str, _extraData: bytes ) -> "ERC4626HyperdriveDeployerDeployContractFunction": diff --git a/lib/hyperdrive_types/hyperdrive_types/ERC4626HyperdriveDeployerTypes.py b/lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerTypes.py similarity index 100% rename from lib/hyperdrive_types/hyperdrive_types/ERC4626HyperdriveDeployerTypes.py rename to lib/hypertypes/hypertypes/ERC4626HyperdriveDeployerTypes.py diff --git a/lib/hyperdrive_types/hyperdrive_types/ForwarderFactoryContract.py b/lib/hypertypes/hypertypes/ForwarderFactoryContract.py similarity index 99% rename from lib/hyperdrive_types/hyperdrive_types/ForwarderFactoryContract.py rename to lib/hypertypes/hypertypes/ForwarderFactoryContract.py index a32940c014..88d90f9139 100644 --- a/lib/hyperdrive_types/hyperdrive_types/ForwarderFactoryContract.py +++ b/lib/hypertypes/hypertypes/ForwarderFactoryContract.py @@ -21,6 +21,7 @@ class ForwarderFactoryERC20LINK_HASHContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "ForwarderFactoryERC20LINK_HASHContractFunction": super().__call__() return self @@ -34,6 +35,7 @@ class ForwarderFactoryCreateContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, token: str, tokenId: int) -> "ForwarderFactoryCreateContractFunction": super().__call__(token, tokenId) return self @@ -47,6 +49,7 @@ class ForwarderFactoryGetDeployDetailsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "ForwarderFactoryGetDeployDetailsContractFunction": super().__call__() return self @@ -60,6 +63,7 @@ class ForwarderFactoryGetForwarderContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, token: str, tokenId: int) -> "ForwarderFactoryGetForwarderContractFunction": super().__call__(token, tokenId) return self diff --git a/lib/hyperdrive_types/hyperdrive_types/ForwarderFactoryTypes.py b/lib/hypertypes/hypertypes/ForwarderFactoryTypes.py similarity index 100% rename from lib/hyperdrive_types/hyperdrive_types/ForwarderFactoryTypes.py rename to lib/hypertypes/hypertypes/ForwarderFactoryTypes.py diff --git a/lib/hyperdrive_types/hyperdrive_types/IHyperdriveContract.py b/lib/hypertypes/hypertypes/IHyperdriveContract.py similarity index 96% rename from lib/hyperdrive_types/hyperdrive_types/IHyperdriveContract.py rename to lib/hypertypes/hypertypes/IHyperdriveContract.py index 160c33f22f..7327df3c49 100644 --- a/lib/hyperdrive_types/hyperdrive_types/IHyperdriveContract.py +++ b/lib/hypertypes/hypertypes/IHyperdriveContract.py @@ -21,6 +21,7 @@ class IHyperdriveDOMAIN_SEPARATORContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveDOMAIN_SEPARATORContractFunction": super().__call__() return self @@ -34,6 +35,7 @@ class IHyperdriveAddLiquidityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _contribution: int, _minApr: int, _maxApr: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveAddLiquidityContractFunction": @@ -49,6 +51,7 @@ class IHyperdriveBalanceOfContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, tokenId: int, owner: str) -> "IHyperdriveBalanceOfContractFunction": super().__call__(tokenId, owner) return self @@ -62,6 +65,7 @@ class IHyperdriveBaseTokenContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveBaseTokenContractFunction": super().__call__() return self @@ -75,6 +79,7 @@ class IHyperdriveBatchTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _from: str, to: str, ids: list[int], values: list[int] ) -> "IHyperdriveBatchTransferFromContractFunction": @@ -90,6 +95,7 @@ class IHyperdriveCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _checkpointTime: int) -> "IHyperdriveCheckpointContractFunction": super().__call__(_checkpointTime) return self @@ -103,6 +109,7 @@ class IHyperdriveCloseLongContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _maturityTime: int, _bondAmount: int, _minOutput: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveCloseLongContractFunction": @@ -118,6 +125,7 @@ class IHyperdriveCloseShortContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _maturityTime: int, _bondAmount: int, _minOutput: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveCloseShortContractFunction": @@ -128,11 +136,26 @@ def __call__( # def call() +class IHyperdriveCollectGovernanceFeeContractFunction(ContractFunction): + """ContractFunction for the collectGovernanceFee method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self, asUnderlying: bool) -> "IHyperdriveCollectGovernanceFeeContractFunction": + super().__call__(asUnderlying) + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class IHyperdriveFactoryContractFunction(ContractFunction): """ContractFunction for the factory method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveFactoryContractFunction": super().__call__() return self @@ -146,6 +169,7 @@ class IHyperdriveGetCheckpointContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _checkpointId: int) -> "IHyperdriveGetCheckpointContractFunction": super().__call__(_checkpointId) return self @@ -159,6 +183,7 @@ class IHyperdriveGetMarketStateContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveGetMarketStateContractFunction": super().__call__() return self @@ -172,6 +197,7 @@ class IHyperdriveGetPoolConfigContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveGetPoolConfigContractFunction": super().__call__() return self @@ -185,6 +211,7 @@ class IHyperdriveGetPoolInfoContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveGetPoolInfoContractFunction": super().__call__() return self @@ -198,6 +225,7 @@ class IHyperdriveGetUncollectedGovernanceFeesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveGetUncollectedGovernanceFeesContractFunction": super().__call__() return self @@ -206,11 +234,26 @@ def __call__(self) -> "IHyperdriveGetUncollectedGovernanceFeesContractFunction": # def call() +class IHyperdriveGetWithdrawPoolContractFunction(ContractFunction): + """ContractFunction for the getWithdrawPool method.""" + + # super() call methods are generic, while our version adds values & types + # pylint: disable=arguments-differ + + def __call__(self) -> "IHyperdriveGetWithdrawPoolContractFunction": + super().__call__() + return self + + # TODO: add call def so we can get return types for the calls + # def call() + + class IHyperdriveInitializeContractFunction(ContractFunction): """ContractFunction for the initialize method.""" # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _contribution: int, _apr: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveInitializeContractFunction": @@ -226,6 +269,7 @@ class IHyperdriveIsApprovedForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, owner: str, spender: str) -> "IHyperdriveIsApprovedForAllContractFunction": super().__call__(owner, spender) return self @@ -239,6 +283,7 @@ class IHyperdriveLinkerCodeHashContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self) -> "IHyperdriveLinkerCodeHashContractFunction": super().__call__() return self @@ -252,6 +297,7 @@ class IHyperdriveLoadContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _slots: list[int]) -> "IHyperdriveLoadContractFunction": super().__call__(_slots) return self @@ -265,6 +311,7 @@ class IHyperdriveNameContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _id: int) -> "IHyperdriveNameContractFunction": super().__call__(_id) return self @@ -278,6 +325,7 @@ class IHyperdriveNoncesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, owner: str) -> "IHyperdriveNoncesContractFunction": super().__call__(owner) return self @@ -291,6 +339,7 @@ class IHyperdriveOpenLongContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _baseAmount: int, _minOutput: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveOpenLongContractFunction": @@ -306,6 +355,7 @@ class IHyperdriveOpenShortContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _bondAmount: int, _maxDeposit: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveOpenShortContractFunction": @@ -321,6 +371,7 @@ class IHyperdrivePauseContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, status: bool) -> "IHyperdrivePauseContractFunction": super().__call__(status) return self @@ -334,6 +385,7 @@ class IHyperdrivePerTokenApprovalsContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, tokenId: int, owner: str, spender: str) -> "IHyperdrivePerTokenApprovalsContractFunction": super().__call__(tokenId, owner, spender) return self @@ -347,6 +399,7 @@ class IHyperdrivePermitForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, owner: str, spender: str, _approved: bool, deadline: int, v: int, r: bytes, s: bytes ) -> "IHyperdrivePermitForAllContractFunction": @@ -362,6 +415,7 @@ class IHyperdriveRedeemWithdrawalSharesContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _shares: int, _minOutput: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveRedeemWithdrawalSharesContractFunction": @@ -377,6 +431,7 @@ class IHyperdriveRemoveLiquidityContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, _shares: int, _minOutput: int, _destination: str, _asUnderlying: bool ) -> "IHyperdriveRemoveLiquidityContractFunction": @@ -392,6 +447,7 @@ class IHyperdriveSetApprovalContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, tokenID: int, operator: str, amount: int) -> "IHyperdriveSetApprovalContractFunction": super().__call__(tokenID, operator, amount) return self @@ -405,6 +461,7 @@ class IHyperdriveSetApprovalBridgeContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, tokenID: int, operator: str, amount: int, caller: str ) -> "IHyperdriveSetApprovalBridgeContractFunction": @@ -420,6 +477,7 @@ class IHyperdriveSetApprovalForAllContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, operator: str, approved: bool) -> "IHyperdriveSetApprovalForAllContractFunction": super().__call__(operator, approved) return self @@ -433,6 +491,7 @@ class IHyperdriveSetGovernanceContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, who: str) -> "IHyperdriveSetGovernanceContractFunction": super().__call__(who) return self @@ -446,6 +505,7 @@ class IHyperdriveSetPauserContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, who: str, status: bool) -> "IHyperdriveSetPauserContractFunction": super().__call__(who, status) return self @@ -459,6 +519,7 @@ class IHyperdriveSymbolContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _id: int) -> "IHyperdriveSymbolContractFunction": super().__call__(_id) return self @@ -472,6 +533,7 @@ class IHyperdriveTotalSupplyContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, _id: int) -> "IHyperdriveTotalSupplyContractFunction": super().__call__(_id) return self @@ -485,6 +547,7 @@ class IHyperdriveTransferFromContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__(self, tokenID: int, _from: str, to: str, amount: int) -> "IHyperdriveTransferFromContractFunction": super().__call__(tokenID, _from, to, amount) return self @@ -498,6 +561,7 @@ class IHyperdriveTransferFromBridgeContractFunction(ContractFunction): # super() call methods are generic, while our version adds values & types # pylint: disable=arguments-differ + def __call__( self, tokenID: int, _from: str, to: str, amount: int, caller: str ) -> "IHyperdriveTransferFromBridgeContractFunction": @@ -508,19 +572,6 @@ def __call__( # def call() -class IHyperdriveWithdrawPoolContractFunction(ContractFunction): - """ContractFunction for the withdrawPool method.""" - - # super() call methods are generic, while our version adds values & types - # pylint: disable=arguments-differ - def __call__(self) -> "IHyperdriveWithdrawPoolContractFunction": - super().__call__() - return self - - # TODO: add call def so we can get return types for the calls - # def call() - - class IHyperdriveContractFunctions(ContractFunctions): """ContractFunctions for the IHyperdrive contract.""" @@ -540,6 +591,8 @@ class IHyperdriveContractFunctions(ContractFunctions): closeShort: IHyperdriveCloseShortContractFunction + collectGovernanceFee: IHyperdriveCollectGovernanceFeeContractFunction + factory: IHyperdriveFactoryContractFunction getCheckpoint: IHyperdriveGetCheckpointContractFunction @@ -552,6 +605,8 @@ class IHyperdriveContractFunctions(ContractFunctions): getUncollectedGovernanceFees: IHyperdriveGetUncollectedGovernanceFeesContractFunction + getWithdrawPool: IHyperdriveGetWithdrawPoolContractFunction + initialize: IHyperdriveInitializeContractFunction isApprovedForAll: IHyperdriveIsApprovedForAllContractFunction @@ -596,8 +651,6 @@ class IHyperdriveContractFunctions(ContractFunctions): transferFromBridge: IHyperdriveTransferFromBridgeContractFunction - withdrawPool: IHyperdriveWithdrawPoolContractFunction - class IHyperdriveContract(Contract): """A web3.py Contract class for the IHyperdrive contract.""" diff --git a/lib/hyperdrive_types/hyperdrive_types/IHyperdriveTypes.py b/lib/hypertypes/hypertypes/IHyperdriveTypes.py similarity index 97% rename from lib/hyperdrive_types/hyperdrive_types/IHyperdriveTypes.py rename to lib/hypertypes/hypertypes/IHyperdriveTypes.py index 15a2c8bdaf..68a3f4e77f 100644 --- a/lib/hyperdrive_types/hyperdrive_types/IHyperdriveTypes.py +++ b/lib/hypertypes/hypertypes/IHyperdriveTypes.py @@ -26,7 +26,7 @@ class Checkpoint: sharePrice: int longSharePrice: int - shortBaseVolume: int + longExposure: int @dataclass @@ -40,7 +40,8 @@ class MarketState: longAverageMaturityTime: int longOpenSharePrice: int shortAverageMaturityTime: int - shortBaseVolume: int + shareAdjustment: int + longExposure: int isInitialized: bool isPaused: bool @@ -61,6 +62,7 @@ class PoolConfig: baseToken: str initialSharePrice: int minimumShareReserves: int + minimumTransactionAmount: int positionDuration: int checkpointDuration: int timeStretch: int @@ -76,6 +78,7 @@ class PoolInfo: """PoolInfo struct.""" shareReserves: int + shareAdjustment: int bondReserves: int lpTotalSupply: int sharePrice: int @@ -83,10 +86,10 @@ class PoolInfo: longAverageMaturityTime: int shortsOutstanding: int shortAverageMaturityTime: int - shortBaseVolume: int withdrawalSharesReadyToWithdraw: int withdrawalSharesProceeds: int lpSharePrice: int + longExposure: int @dataclass diff --git a/lib/hypertypes/hypertypes/__init__.py b/lib/hypertypes/hypertypes/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/hyperdrive_types/hyperdrive_types/codegen_test.py b/lib/hypertypes/hypertypes/codegen_test.py similarity index 94% rename from lib/hyperdrive_types/hyperdrive_types/codegen_test.py rename to lib/hypertypes/hypertypes/codegen_test.py index 6e12df17c9..58a74b08f2 100644 --- a/lib/hyperdrive_types/hyperdrive_types/codegen_test.py +++ b/lib/hypertypes/hypertypes/codegen_test.py @@ -39,7 +39,8 @@ def test_codegen(self): print(f"{exc=}; skipping file") continue # ensure that the number of files is the same - assert count_files(path_to_this_file) - 1 == count_files(test_dir) + # this file (codegen_test.py) and __init__.py would not be included + assert count_files(path_to_this_file) - 2 == count_files(test_dir) # ensure that the file names are the same for file in os.listdir(test_dir): assert file in os.listdir(path_to_this_file) diff --git a/lib/hyperdrive_types/pyproject.toml b/lib/hypertypes/pyproject.toml similarity index 76% rename from lib/hyperdrive_types/pyproject.toml rename to lib/hypertypes/pyproject.toml index 1323205ab3..d008c44b12 100644 --- a/lib/hyperdrive_types/pyproject.toml +++ b/lib/hypertypes/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "hyperdrive_types" +name = "hypertypes" version = "0.0.0" authors = [{ name = "Codegen"}] description = "Contract code generated using Pypechain" @@ -13,7 +13,11 @@ classifiers = [ [project.optional-dependencies] with-dependencies = [ - "hyperdrive_types[base, lateral]" + "hypertypes[base, lateral]" ] -base = [] +base = ["web3"] lateral = ["pypechain @ git+https://github.com/delvtech/elf-simulations.git/#subdirectory=lib/pypechain",] + +[build-system] +requires = ["flit_core>=3.2"] +build-backend = "flit_core.buildapi" diff --git a/lib/hyperdrive_types/scripts/build_type_files.sh b/lib/hypertypes/scripts/generate_package.sh similarity index 77% rename from lib/hyperdrive_types/scripts/build_type_files.sh rename to lib/hypertypes/scripts/generate_package.sh index b570bf1423..d08a8f3741 100755 --- a/lib/hyperdrive_types/scripts/build_type_files.sh +++ b/lib/hypertypes/scripts/generate_package.sh @@ -19,7 +19,14 @@ if [ "$#" -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then exit 0 fi +# Create the hypertypes folder if it does not already exist +target_dir="$script_dir/../hypertypes" +if [ ! -d "$target_dir" ]; then + mkdir -p "$target_dir" + touch "$target_dir/__init__.py" +fi + # Loop recursively over all .json files in the provided directory and run the python script for each find "$1" -type f -name "*.json" | while read -r json_file; do - python lib/pypechain/pypechain/run_pypechain.py "$json_file" "$script_dir/../hyperdrive_types" "120" + python lib/pypechain/pypechain/run_pypechain.py "$json_file" "$target_dir" "120" done diff --git a/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json b/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json index 55759daa48..e5408583a8 100644 --- a/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json +++ b/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json @@ -339,12 +339,12 @@ } ], "bytecode": { - "object": "0x60806040523480156200001157600080fd5b50604051806040016040528060048152602001634261736560e01b815250604051806040016040528060048152602001634241534560e01b81525081600390816200005d91906200011a565b5060046200006c82826200011a565b505050620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a057607f821691505b602082108103620000c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011557600081815260208120601f850160051c81016020861015620000f05750805b601f850160051c820191505b818110156200011157828155600101620000fc565b5050505b505050565b81516001600160401b0381111562000136576200013662000075565b6200014e816200014784546200008b565b84620000c7565b602080601f8311600181146200018657600084156200016d5750858301515b600019600386901b1c1916600185901b17855562000111565b600085815260208120601f198616915b82811015620001b75788860151825594840194600190910190840162000196565b5085821015620001d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1e80620001f66000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220f57185fcfa454cd1da42f03b63a56ee658acb08bb0d9065c39aa97d081dc011564736f6c63430008130033", + "object": "0x60806040523480156200001157600080fd5b50604051806040016040528060048152602001634261736560e01b815250604051806040016040528060048152602001634241534560e01b81525081600390816200005d91906200011a565b5060046200006c82826200011a565b505050620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a057607f821691505b602082108103620000c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011557600081815260208120601f850160051c81016020861015620000f05750805b601f850160051c820191505b818110156200011157828155600101620000fc565b5050505b505050565b81516001600160401b0381111562000136576200013662000075565b6200014e816200014784546200008b565b84620000c7565b602080601f8311600181146200018657600084156200016d5750858301515b600019600386901b1c1916600185901b17855562000111565b600085815260208120601f198616915b82811015620001b75788860151825594840194600190910190840162000196565b5085821015620001d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1e80620001f66000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220268114287ad8a004d4851fd631eb99641fbf5a9ca9b32b5ee8dc567d76ef1bc464736f6c63430008130033", "sourceMap": "252:470:41:-:0;;;290:38;;;;;;;;;;1980:113:70;;;;;;;;;;;;;-1:-1:-1;;;1980:113:70;;;;;;;;;;;;;;;;-1:-1:-1;;;1980:113:70;;;2054:5;2046;:13;;;;;;:::i;:::-;-1:-1:-1;2069:7:70;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;252:470:41;;14:127:156;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:156;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:156;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:156;;;2580:26;2531:89;-1:-1:-1;;1335:1:156;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:156;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:156;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:156;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:156:o;:::-;252:470:41;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220f57185fcfa454cd1da42f03b63a56ee658acb08bb0d9065c39aa97d081dc011564736f6c63430008130033", + "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220268114287ad8a004d4851fd631eb99641fbf5a9ca9b32b5ee8dc567d76ef1bc464736f6c63430008130033", "sourceMap": "252:470:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:156;;1162:22;1144:41;;1132:2;1117:18;4444:197:70;1004:187:156;3255:106:70;3342:12;;3255:106;;;1342:25:156;;;1330:2;1315:18;3255:106:70;1196:177:156;5203:256:70;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1853:36:156;;1841:2;1826:18;3104:91:70;1711:184:156;5854:234:70;;;;;;:::i;:::-;;:::i;421:103:41:-;;;;;;:::i;:::-;;:::i;:::-;;530:81;;;;;;:::i;:::-;;:::i;3419:125:70:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:70;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;617:103:41:-;;;;;;:::i;:::-;;:::i;334:81::-;;;;;;:::i;:::-;;:::i;6575:427:70:-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;;:::i;2158:98::-;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:80;4581:32:70;719:10:80;4597:7:70;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:80;5356:38:70;5372:4;719:10:80;5387:6:70;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:70;;5203:256;-1:-1:-1;;;;5203:256:70:o;5854:234::-;5942:4;719:10:80;5996:64:70;719:10:80;6012:7:70;6049:10;6021:25;719:10:80;6012:7:70;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;421:103:41:-;491:26;497:11;510:6;491:5;:26::i;:::-;421:103;;:::o;530:81::-;579:25;585:10;597:6;579:5;:25::i;:::-;530:81;:::o;2369:102:70:-;2425:13;2457:7;2450:14;;;;;:::i;617:103:41:-;687:26;693:11;706:6;687:5;:26::i;334:81::-;383:25;389:10;401:6;383:5;:25::i;6575:427:70:-;6668:4;719:10:80;6668:4:70;6749:25;719:10:80;6766:7:70;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:70;;3355:2:156;6784:85:70;;;3337:21:156;3394:2;3374:18;;;3367:30;3433:34;3413:18;;;3406:62;-1:-1:-1;;;3484:18:156;;;3477:35;3529:19;;6784:85:70;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:80;3873:28:70;719:10:80;3890:2:70;3894:6;3873:9;:28::i;3987:149::-;-1:-1:-1;;;;;4102:18:70;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;10457:340::-;-1:-1:-1;;;;;10558:19:70;;10550:68;;;;-1:-1:-1;;;10550:68:70;;3761:2:156;10550:68:70;;;3743:21:156;3800:2;3780:18;;;3773:30;3839:34;3819:18;;;3812:62;-1:-1:-1;;;3890:18:156;;;3883:34;3934:19;;10550:68:70;3559:400:156;10550:68:70;-1:-1:-1;;;;;10636:21:70;;10628:68;;;;-1:-1:-1;;;10628:68:70;;4166:2:156;10628:68:70;;;4148:21:156;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;-1:-1:-1;;;4295:18:156;;;4288:32;4337:19;;10628:68:70;3964:398:156;10628:68:70;-1:-1:-1;;;;;10707:18:70;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1342:25:156;;;10758:32:70;;1315:18:156;10758:32:70;;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:70;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:70;;4569:2:156;11297:68:70;;;4551:21:156;4608:2;4588:18;;;4581:30;4647:31;4627:18;;;4620:59;4696:18;;11297:68:70;4367:353:156;11297:68:70;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:70;;7544:68;;;;-1:-1:-1;;;7544:68:70;;4927:2:156;7544:68:70;;;4909:21:156;4966:2;4946:18;;;4939:30;5005:34;4985:18;;;4978:62;-1:-1:-1;;;5056:18:156;;;5049:35;5101:19;;7544:68:70;4725:401:156;7544:68:70;-1:-1:-1;;;;;7630:16:70;;7622:64;;;;-1:-1:-1;;;7622:64:70;;5333:2:156;7622:64:70;;;5315:21:156;5372:2;5352:18;;;5345:30;5411:34;5391:18;;;5384:62;-1:-1:-1;;;5462:18:156;;;5455:33;5505:19;;7622:64:70;5131:399:156;7622:64:70;-1:-1:-1;;;;;7768:15:70;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:70;;5737:2:156;7793:72:70;;;5719:21:156;5776:2;5756:18;;;5749:30;5815:34;5795:18;;;5788:62;-1:-1:-1;;;5866:18:156;;;5859:36;5912:19;;7793:72:70;5535:402:156;7793:72:70;-1:-1:-1;;;;;7899:15:70;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1342:25:156;;;8114:13:70;;8163:26;;1315:18:156;8163:26:70;;;;;;;8200:37;9375:659;8520:535;-1:-1:-1;;;;;8603:21:70;;8595:65;;;;-1:-1:-1;;;8595:65:70;;6144:2:156;8595:65:70;;;6126:21:156;6183:2;6163:18;;;6156:30;6222:33;6202:18;;;6195:61;6273:18;;8595:65:70;5942:355:156;8595:65:70;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:70;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1342:25:156;;;8952:37:70;;1315:18:156;8952:37:70;;;;;;;421:103:41;;:::o;9375:659:70:-;-1:-1:-1;;;;;9458:21:70;;9450:67;;;;-1:-1:-1;;;9450:67:70;;6504:2:156;9450:67:70;;;6486:21:156;6543:2;6523:18;;;6516:30;6582:34;6562:18;;;6555:62;-1:-1:-1;;;6633:18:156;;;6626:31;6674:19;;9450:67:70;6302:397:156;9450:67:70;-1:-1:-1;;;;;9613:18:70;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:70;;6906:2:156;9641:71:70;;;6888:21:156;6945:2;6925:18;;;6918:30;6984:34;6964:18;;;6957:62;-1:-1:-1;;;7035:18:156;;;7028:32;7077:19;;9641:71:70;6704:398:156;9641:71:70;-1:-1:-1;;;;;9746:18:70;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1342:25:156;;;9746:9:70;;:18;9931:37;;1315:18:156;9931:37:70;1196:177:156;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:156;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:156:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:156;;1900:180;-1:-1:-1;1900:180:156:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:156:o;2276:260::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;;2492:38;2526:2;2515:9;2511:18;2492:38;:::i;:::-;2482:48;;2276:260;;;;;:::o;2541:380::-;2620:1;2616:12;;;;2663;;;2684:61;;2738:4;2730:6;2726:17;2716:27;;2684:61;2791:2;2783:6;2780:14;2760:18;2757:38;2754:161;;2837:10;2832:3;2828:20;2825:1;2818:31;2872:4;2869:1;2862:15;2900:4;2897:1;2890:15;2754:161;;2541:380;;;:::o;2926:222::-;2991:9;;;3012:10;;;3009:133;;;3064:10;3059:3;3055:20;3052:1;3045:31;3099:4;3096:1;3089:15;3127:4;3124:1;3117:15", "linkReferences": {} }, @@ -365,7 +365,7 @@ "transfer(address,uint256)": "a9059cbb", "transferFrom(address,address,uint256)": "23b872dd" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\",\"lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -754,16 +754,16 @@ }, "settings": { "remappings": [ - ":@aave/=lib/aave-v3-core/contracts/", - ":aave-v3-core/=lib/aave-v3-core/", - ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/", - ":yield-daddy/=lib/yield-daddy/" + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/", + "lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "optimizer": { "enabled": true, @@ -831,23 +831,23 @@ }, "ast": { "absolutePath": "contracts/test/ERC20Mintable.sol", - "id": 11243, + "id": 11200, "exportedSymbols": { "ERC20": [ - 40360 + 40317 ], "ERC20Burnable": [ - 40482 + 40439 ], "ERC20Mintable": [ - 11242 + 11199 ] }, "nodeType": "SourceUnit", "src": "39:684:41", "nodes": [ { - "id": 11177, + "id": 11134, "nodeType": "PragmaDirective", "src": "39:23:41", "nodes": [], @@ -858,23 +858,23 @@ ] }, { - "id": 11179, + "id": 11136, "nodeType": "ImportDirective", "src": "64:79:41", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 11243, - "sourceUnit": 40361, + "scope": 11200, + "sourceUnit": 40318, "symbolAliases": [ { "foreign": { - "id": 11178, + "id": 11135, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40360, + "referencedDeclaration": 40317, "src": "73:5:41", "typeDescriptions": {} }, @@ -884,23 +884,23 @@ "unitAlias": "" }, { - "id": 11181, + "id": 11138, "nodeType": "ImportDirective", "src": "144:106:41", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol", "file": "openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol", "nameLocation": "-1:-1:-1", - "scope": 11243, - "sourceUnit": 40483, + "scope": 11200, + "sourceUnit": 40440, "symbolAliases": [ { "foreign": { - "id": 11180, + "id": 11137, "name": "ERC20Burnable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40482, + "referencedDeclaration": 40439, "src": "153:13:41", "typeDescriptions": {} }, @@ -910,17 +910,17 @@ "unitAlias": "" }, { - "id": 11242, + "id": 11199, "nodeType": "ContractDefinition", "src": "252:470:41", "nodes": [ { - "id": 11191, + "id": 11148, "nodeType": "FunctionDefinition", "src": "290:38:41", "nodes": [], "body": { - "id": 11190, + "id": 11147, "nodeType": "Block", "src": "326:2:41", "nodes": [], @@ -933,7 +933,7 @@ "arguments": [ { "hexValue": "42617365", - "id": 11186, + "id": 11143, "isConstant": false, "isLValue": false, "isPure": true, @@ -949,7 +949,7 @@ }, { "hexValue": "42415345", - "id": 11187, + "id": 11144, "isConstant": false, "isLValue": false, "isPure": true, @@ -964,16 +964,16 @@ "value": "BASE" } ], - "id": 11188, + "id": 11145, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 11185, + "id": 11142, "name": "ERC20", "nameLocations": [ "304:5:41" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 40360, + "referencedDeclaration": 40317, "src": "304:5:41" }, "nodeType": "ModifierInvocation", @@ -983,29 +983,29 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 11184, + "id": 11141, "nodeType": "ParameterList", "parameters": [], "src": "301:2:41" }, "returnParameters": { - "id": 11189, + "id": 11146, "nodeType": "ParameterList", "parameters": [], "src": "326:0:41" }, - "scope": 11242, + "scope": 11199, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 11203, + "id": 11160, "nodeType": "FunctionDefinition", "src": "334:81:41", "nodes": [], "body": { - "id": 11202, + "id": 11159, "nodeType": "Block", "src": "373:42:41", "nodes": [], @@ -1015,7 +1015,7 @@ "arguments": [ { "expression": { - "id": 11197, + "id": 11154, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1026,7 +1026,7 @@ "typeString": "msg" } }, - "id": 11198, + "id": 11155, "isConstant": false, "isLValue": false, "isPure": false, @@ -1041,11 +1041,11 @@ } }, { - "id": 11199, + "id": 11156, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11193, + "referencedDeclaration": 11150, "src": "401:6:41", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1064,18 +1064,18 @@ "typeString": "uint256" } ], - "id": 11196, + "id": 11153, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40177, + "referencedDeclaration": 40134, "src": "383:5:41", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 11200, + "id": 11157, "isConstant": false, "isLValue": false, "isPure": false, @@ -1091,7 +1091,7 @@ "typeString": "tuple()" } }, - "id": 11201, + "id": 11158, "nodeType": "ExpressionStatement", "src": "383:25:41" } @@ -1104,17 +1104,17 @@ "name": "mint", "nameLocation": "343:4:41", "parameters": { - "id": 11194, + "id": 11151, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11193, + "id": 11150, "mutability": "mutable", "name": "amount", "nameLocation": "356:6:41", "nodeType": "VariableDeclaration", - "scope": 11203, + "scope": 11160, "src": "348:14:41", "stateVariable": false, "storageLocation": "default", @@ -1123,7 +1123,7 @@ "typeString": "uint256" }, "typeName": { - "id": 11192, + "id": 11149, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "348:7:41", @@ -1138,23 +1138,23 @@ "src": "347:16:41" }, "returnParameters": { - "id": 11195, + "id": 11152, "nodeType": "ParameterList", "parameters": [], "src": "373:0:41" }, - "scope": 11242, + "scope": 11199, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 11216, + "id": 11173, "nodeType": "FunctionDefinition", "src": "421:103:41", "nodes": [], "body": { - "id": 11215, + "id": 11172, "nodeType": "Block", "src": "481:43:41", "nodes": [], @@ -1163,11 +1163,11 @@ "expression": { "arguments": [ { - "id": 11211, + "id": 11168, "name": "destination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11205, + "referencedDeclaration": 11162, "src": "497:11:41", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1175,11 +1175,11 @@ } }, { - "id": 11212, + "id": 11169, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11207, + "referencedDeclaration": 11164, "src": "510:6:41", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1198,18 +1198,18 @@ "typeString": "uint256" } ], - "id": 11210, + "id": 11167, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40177, + "referencedDeclaration": 40134, "src": "491:5:41", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 11213, + "id": 11170, "isConstant": false, "isLValue": false, "isPure": false, @@ -1225,7 +1225,7 @@ "typeString": "tuple()" } }, - "id": 11214, + "id": 11171, "nodeType": "ExpressionStatement", "src": "491:26:41" } @@ -1238,17 +1238,17 @@ "name": "mint", "nameLocation": "430:4:41", "parameters": { - "id": 11208, + "id": 11165, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11205, + "id": 11162, "mutability": "mutable", "name": "destination", "nameLocation": "443:11:41", "nodeType": "VariableDeclaration", - "scope": 11216, + "scope": 11173, "src": "435:19:41", "stateVariable": false, "storageLocation": "default", @@ -1257,7 +1257,7 @@ "typeString": "address" }, "typeName": { - "id": 11204, + "id": 11161, "name": "address", "nodeType": "ElementaryTypeName", "src": "435:7:41", @@ -1271,12 +1271,12 @@ }, { "constant": false, - "id": 11207, + "id": 11164, "mutability": "mutable", "name": "amount", "nameLocation": "464:6:41", "nodeType": "VariableDeclaration", - "scope": 11216, + "scope": 11173, "src": "456:14:41", "stateVariable": false, "storageLocation": "default", @@ -1285,7 +1285,7 @@ "typeString": "uint256" }, "typeName": { - "id": 11206, + "id": 11163, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "456:7:41", @@ -1300,23 +1300,23 @@ "src": "434:37:41" }, "returnParameters": { - "id": 11209, + "id": 11166, "nodeType": "ParameterList", "parameters": [], "src": "481:0:41" }, - "scope": 11242, + "scope": 11199, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 11228, + "id": 11185, "nodeType": "FunctionDefinition", "src": "530:81:41", "nodes": [], "body": { - "id": 11227, + "id": 11184, "nodeType": "Block", "src": "569:42:41", "nodes": [], @@ -1326,7 +1326,7 @@ "arguments": [ { "expression": { - "id": 11222, + "id": 11179, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1337,7 +1337,7 @@ "typeString": "msg" } }, - "id": 11223, + "id": 11180, "isConstant": false, "isLValue": false, "isPure": false, @@ -1352,11 +1352,11 @@ } }, { - "id": 11224, + "id": 11181, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11218, + "referencedDeclaration": 11175, "src": "597:6:41", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1375,18 +1375,18 @@ "typeString": "uint256" } ], - "id": 11221, + "id": 11178, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40249, + "referencedDeclaration": 40206, "src": "579:5:41", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 11225, + "id": 11182, "isConstant": false, "isLValue": false, "isPure": false, @@ -1402,7 +1402,7 @@ "typeString": "tuple()" } }, - "id": 11226, + "id": 11183, "nodeType": "ExpressionStatement", "src": "579:25:41" } @@ -1415,17 +1415,17 @@ "name": "burn", "nameLocation": "539:4:41", "parameters": { - "id": 11219, + "id": 11176, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11218, + "id": 11175, "mutability": "mutable", "name": "amount", "nameLocation": "552:6:41", "nodeType": "VariableDeclaration", - "scope": 11228, + "scope": 11185, "src": "544:14:41", "stateVariable": false, "storageLocation": "default", @@ -1434,7 +1434,7 @@ "typeString": "uint256" }, "typeName": { - "id": 11217, + "id": 11174, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "544:7:41", @@ -1449,23 +1449,23 @@ "src": "543:16:41" }, "returnParameters": { - "id": 11220, + "id": 11177, "nodeType": "ParameterList", "parameters": [], "src": "569:0:41" }, - "scope": 11242, + "scope": 11199, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 11241, + "id": 11198, "nodeType": "FunctionDefinition", "src": "617:103:41", "nodes": [], "body": { - "id": 11240, + "id": 11197, "nodeType": "Block", "src": "677:43:41", "nodes": [], @@ -1474,11 +1474,11 @@ "expression": { "arguments": [ { - "id": 11236, + "id": 11193, "name": "destination", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11230, + "referencedDeclaration": 11187, "src": "693:11:41", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1486,11 +1486,11 @@ } }, { - "id": 11237, + "id": 11194, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11232, + "referencedDeclaration": 11189, "src": "706:6:41", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1509,18 +1509,18 @@ "typeString": "uint256" } ], - "id": 11235, + "id": 11192, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40249, + "referencedDeclaration": 40206, "src": "687:5:41", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 11238, + "id": 11195, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,7 +1536,7 @@ "typeString": "tuple()" } }, - "id": 11239, + "id": 11196, "nodeType": "ExpressionStatement", "src": "687:26:41" } @@ -1549,17 +1549,17 @@ "name": "burn", "nameLocation": "626:4:41", "parameters": { - "id": 11233, + "id": 11190, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11230, + "id": 11187, "mutability": "mutable", "name": "destination", "nameLocation": "639:11:41", "nodeType": "VariableDeclaration", - "scope": 11241, + "scope": 11198, "src": "631:19:41", "stateVariable": false, "storageLocation": "default", @@ -1568,7 +1568,7 @@ "typeString": "address" }, "typeName": { - "id": 11229, + "id": 11186, "name": "address", "nodeType": "ElementaryTypeName", "src": "631:7:41", @@ -1582,12 +1582,12 @@ }, { "constant": false, - "id": 11232, + "id": 11189, "mutability": "mutable", "name": "amount", "nameLocation": "660:6:41", "nodeType": "VariableDeclaration", - "scope": 11241, + "scope": 11198, "src": "652:14:41", "stateVariable": false, "storageLocation": "default", @@ -1596,7 +1596,7 @@ "typeString": "uint256" }, "typeName": { - "id": 11231, + "id": 11188, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "652:7:41", @@ -1611,12 +1611,12 @@ "src": "630:37:41" }, "returnParameters": { - "id": 11234, + "id": 11191, "nodeType": "ParameterList", "parameters": [], "src": "677:0:41" }, - "scope": 11242, + "scope": 11199, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1626,16 +1626,16 @@ "baseContracts": [ { "baseName": { - "id": 11182, + "id": 11139, "name": "ERC20", "nameLocations": [ "278:5:41" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 40360, + "referencedDeclaration": 40317, "src": "278:5:41" }, - "id": 11183, + "id": 11140, "nodeType": "InheritanceSpecifier", "src": "278:5:41" } @@ -1645,15 +1645,15 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ - 11242, - 40360, - 40544, - 40438, - 41473 + 11199, + 40317, + 40501, + 40395, + 41430 ], "name": "ERC20Mintable", "nameLocation": "261:13:41", - "scope": 11243, + "scope": 11200, "usedErrors": [] } ], diff --git a/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json b/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json index 353a85abc5..2b63100b13 100644 --- a/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json +++ b/packages/hyperdrive/src/abis/ERC4626HyperdriveDeployer.sol/ERC4626HyperdriveDeployer.json @@ -30,6 +30,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -126,16 +131,16 @@ } ], "bytecode": { - "object": "0x60a060405234801561001057600080fd5b5060405161690838038061690883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161687e61008a60003960006073015261687e6000f3fe60806040523480156200001157600080fd5b50600436106200002e5760003560e01c806376725f861462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003c3565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b61636c80620004dd83390190565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102208112156200026957600080fd5b6101a0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a0830152620002d360c089016200012c565b60c0830152620002e660e089016200012c565b60e0830152610100620002fc8a828b0162000149565b8184015250610160880135610120830152610180880135610140830152819650620003298189016200012c565b955050506101c08601359250620003446101e087016200012c565b915061020086013567ffffffffffffffff8111156200036257600080fd5b6200037088828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003b85781516001600160a01b03168752958201959082019060010162000391565b509495945050505050565b86516001600160a01b0316815260006102406020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c08901516200042260c08501826001600160a01b03169052565b5060e08901516200043e60e08501826001600160a01b03169052565b50610100898101518051858301526020810151610120860152604081015161014086015250506101208901516101608401526101408901516101808401526001600160a01b0388166101a0840152866101c0840152620004aa6101e08401876001600160a01b03169052565b6001600160a01b03851661020084015280610220840152620004cf818401856200037d565b999850505050505050505056fe61028060405260016000553480156200001757600080fd5b506040516200636c3803806200636c8339810160408190526200003a9162000772565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260808101516000036200017d57604051635428734d60e01b815260040160405180910390fd5b608081018051610120525160608201511080620001ae575080608001518160600151620001ab9190620008b3565b15155b15620001cd5760405163253fffcf60e11b815260040160405180910390fd5b60608101516101405260a08101516101605260208101516101805260c0810151601180546001600160a01b0319166001600160a01b0392831617905560e0820151166102205261010081015151670de0b6b3a76400001080620002405750670de0b6b3a764000081610100015160200151115b806200025c5750670de0b6b3a764000081610100015160400151115b156200027b576040516322f72cc360e11b815260040160405180910390fd5b61010081018051516101c0528051602001516101e05251604001516102005261014001516102405260005b84610120015181101562000333576040805180820190915263ffffffff4281168252600060208301818152601280546001810182559252925192516001600160e01b03166401000000000292909116919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490910155806200032a81620008d6565b915050620002a6565b5050506001600160a01b0388166102605250620003569450506200057992505050565b8660200151146200037a576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620008fe565b6001600160a01b031686600001516001600160a01b0316146200041557604051630722152560e11b815260040160405180910390fd5b85516102605160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200046c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000492919062000925565b620004b0576040516340b27c2160e11b815260040160405180910390fd5b60005b81518110156200056c576000828281518110620004d457620004d462000949565b60200260200101519050610260516001600160a01b0316816001600160a01b03161480620005165750610100516001600160a01b0316816001600160a01b0316145b15620005355760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19166001179055806200056381620008d6565b915050620004b3565b5050505050505062000979565b610260516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f291906200095f565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715620006335762000633620005f7565b60405290565b6001600160a01b03811681146200064f57600080fd5b50565b80516200065f8162000639565b919050565b6000606082840312156200067757600080fd5b604051606081016001600160401b03811182821017156200069c576200069c620005f7565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006d557600080fd5b815160206001600160401b0380831115620006f457620006f4620005f7565b8260051b604051601f19603f830116810181811084821117156200071c576200071c620005f7565b6040529384528581018301938381019250878511156200073b57600080fd5b83870191505b8482101562000767578151620007578162000639565b8352918301919083019062000741565b979650505050505050565b6000806000806000808688036102408112156200078e57600080fd5b6101a0808212156200079f57600080fd5b620007a96200060d565b9150620007b68962000652565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a0830152620007f860c08a0162000652565b60c08301526200080b60e08a0162000652565b60e0830152610100620008218b828c0162000664565b81840152506101608901516101208301526101808901516101408301528197506200084e818a0162000652565b965050506101c08701519350620008696101e0880162000652565b92506200087a610200880162000652565b6102208801519092506001600160401b038111156200089857600080fd5b620008a689828a01620006c3565b9150509295509295509295565b600082620008d157634e487b7160e01b600052601260045260246000fd5b500690565b600060018201620008f757634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200091157600080fd5b81516200091e8162000639565b9392505050565b6000602082840312156200093857600080fd5b815180151581146200091e57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200097257600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516157a662000bc660003960008181611f5e01528181611ffd0152818161207f015281816128be0152818161293f0152818161297f0152612a12015260006141b60152600081816105590152818161066901528181610c8a0152610cf001526000818161434201528181614551015281816145ca015281816148f4015261496501526000818161459e01526149390152600081816143020152818161452501526148c8015260008181610a5301528181610a9e01528181610bb20152818161252c0152818161310101528181613330015281816136300152818161367f0152613b970152600081816107de01528181610b21015281816117aa0152818161224a0152818161229101528181612cc201528181612d330152818161330a0152818161389f0152818161390f01528181613cf20152613d63015260008181610b64015281816117ec01528181612228015281816122b201528181612ca001528181612d54015281816133560152818161387d0152818161393001528181613c7e0152613d8401526000818161085f01528181610b43015281816110a1015281816117cb01528181611a9601528181612e8d0152818161383601528181613ca301528181613e0f01526146e6015260008181611c5b01528181611d0401526120c401526000611f1a015260008181610386015261131c01526000612bbe01526000612b810152600061015701526157a66000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063c23632a71161006f578063c23632a7146104a8578063c326a903146104c8578063c576201d146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a22cb46514610468578063ab033ea91461048857610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a2914610272578063116606451461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f929190615043565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe82615053565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016150c4565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b36600461517e565b61054e565b005b34801561027e57600080fd5b5061027061028d3660046151a9565b610692565b6102a56102a03660046151c6565b6106db565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615255565b610917565b3480156102eb57600080fd5b506102706102fa3660046152ea565b6109d5565b61031261030d3660046151c6565b6109e8565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b3660046151a9565b610c3d565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c33660046151c6565b610d21565b3480156103d457600080fd5b506102706103e3366004615332565b610ee7565b3480156103f457600080fd5b50610312610403366004615371565b610f35565b34801561041457600080fd5b506102706104233660046153c7565b6111ca565b34801561043457600080fd5b50610270610443366004615400565b611242565b34801561045457600080fd5b50610270610463366004615480565b611490565b34801561047457600080fd5b506102706104833660046153c7565b6114a1565b34801561049457600080fd5b506102706104a336600461517e565b61150d565b3480156104b457600080fd5b506102a56104c33660046151c6565b611581565b6103126104d6366004615371565b611710565b6102a56104e93660046151c6565b6119f7565b3480156104fa57600080fd5b506102706105093660046154b8565b611bda565b34801561051a57600080fd5b50610270610529366004615509565b611c2a565b34801561053a57600080fd5b50610312610549366004615371565b611d30565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615522565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083611e80565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c80549115156101000261ff0019909216919091179055565b6000806000546001146107095760405162461bcd60e51b81526004016107009061553b565b60405180910390fd5b6002600055600c54610100900460ff1615610737576040516313d0ff5960e31b815260040160405180910390fd5b61073f611ee3565b8560000361076057604051631f2a200560e01b815260040160405180910390fd5b60008061076d8886611f04565b91509150600061077b6120bd565b905061078781836120f8565b5060008060006107978686612201565b600854919a509295509093509091506107c1908390600160801b90046001600160801b0316615575565b600854610803906107dc9086906001600160801b0316615588565b7f000000000000000000000000000000000000000000000000000000000000000090612344565b106108215760405163512095c760e01b815260040160405180910390fd5b868b11156108425760405163c972651760e01b815260040160405180910390fd5b80601060008282546108549190615588565b9091555061088490507f000000000000000000000000000000000000000000000000000000000000000085615588565b975061089483888488888d612360565b60006108a160018a612595565b90506108ae818c8a6125ca565b604080518a8152602081018f90529081018990528d9082906001600160a01b038e16907f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b39060600160405180910390a350505050505050505b6001600055909590945092505050565b6001600160a01b038616158061093457506001600160a01b038516155b156109525760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109725760405163174861a760e31b815260040160405180910390fd5b60005b838110156109cc576109ba8585838181106109925761099261559b565b9050602002013588888686868181106109ad576109ad61559b565b9050602002013533612673565b806109c4816155b1565b915050610975565b50505050505050565b6109e28484848433612673565b50505050565b60008054600114610a0b5760405162461bcd60e51b81526004016107009061553b565b6002600055610a18611ee3565b600c5460ff1615610a3c57604051637983c05160e01b815260040160405180910390fd5b600080610a498785611f04565b9092509050610a797f000000000000000000000000000000000000000000000000000000000000000060026155ca565b821015610a9957604051632afb507160e21b815260040160405180910390fd5b610ac47f000000000000000000000000000000000000000000000000000000000000000060026155ca565b610ace9083615575565b9250610ae1610adb6120bd565b826120f8565b50600c805460ff19166001179055610af8826127f9565b600880546001600160801b0319166001600160801b0392909216919091179055610b8d610b88837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061280f565b6127f9565b600880546001600160801b03928316600160801b029216919091179055610bd66000807f00000000000000000000000000000000000000000000000000000000000000006125ca565b610be2600086856125ca565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c605760405162461bcd60e51b81526004016107009061553b565b60026000908155338152600f602052604090205460ff16158015610cad5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610cc457506011546001600160a01b03163314155b15610ce1576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d15817f00000000000000000000000000000000000000000000000000000000000000008561288a565b60016000559392505050565b600080600054600114610d465760405162461bcd60e51b81526004016107009061553b565b60026000908155610d556129f2565b9050610d62610adb6120bd565b50600d548792506001600160801b031680831115610d8757806001600160801b031692505b82600003610d9d57600080935093505050610907565b610dac600360f81b3385612a85565b600d546001600160801b03600160801b909104811690600090610dd490869084908616612b25565b9050610ddf856127f9565b610de990846155e1565b600d80546001600160801b0319166001600160801b0392909216919091179055610e12816127f9565b600d8054601090610e34908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610e6381898961288a565b955085610e708a87612344565b1115610e8f5760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050506001600055909590945092505050565b83610ef181612b43565b6001600160a01b0316336001600160a01b031614610f2257604051632aab8bd360e01b815260040160405180910390fd5b610f2e85858585612c00565b5050505050565b60008054600114610f585760405162461bcd60e51b81526004016107009061553b565b60026000908155859003610f7f57604051631f2a200560e01b815260040160405180910390fd5b6000610f896129f2565b9050610f9587826120f8565b50610fab610fa4600289612595565b3388612a85565b600080600080610fbc8a868d612c6d565b60085493975091955093509150600090610fe4906107dc9087906001600160801b0316615588565b600854909150600090611008908690600160801b90046001600160801b0316615575565b6008549091506001600160801b03161515806110355750600854600160801b90046001600160801b031615155b80156110415750808210155b1561105f5760405163512095c760e01b815260040160405180910390fd5b505080601060008282546110739190615588565b9091555050428b1115611097576110978a8461108f8486615575565b878f8a612def565b6000600e816110c67f00000000000000000000000000000000000000000000000000000000000000008f615575565b815260208101919091526040016000908120546001600160801b03169150428d11156110f2578661110b565b60008d8152600e60205260409020546001600160801b03165b9050600061111c8d8685858c6130a0565b9050600061112b828d8d61288a565b90508c81101561114e5760405163c972651760e01b815260040160405180910390fd5b8e8e61115b600283612595565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f8486856040516111a9939291909283526020830191909152604082015260600190565b60405180910390a3505060016000559e9d5050505050505050505050505050565b6011546001600160a01b031633146111f4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b834211156112635760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b03871661128a5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156113b6573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b0316146113f457604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389166000908152600760205260408120805491611418836155b1565b90915550506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b61149c83838333612c00565b505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b03163314611537576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146115a65760405162461bcd60e51b81526004016107009061553b565b600260009081558690036115cd57604051631f2a200560e01b815260040160405180910390fd5b60006115d76129f2565b90506115e4610adb6120bd565b5060026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54600d54600360f81b6000908152600080516020615751833981519152549091611640916001600160801b0390911690615575565b9050600061164e8284615588565b905061165c6000338c612a85565b600061166b8b868487876130da565b9650905061167e600360f81b8a886125ca565b611689818a8a61288a565b9650868a11156116ac5760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146117335760405162461bcd60e51b81526004016107009061553b565b6002600055600c54610100900460ff1615611761576040516313d0ff5960e31b815260040160405180910390fd5b611769611ee3565b8560000361178a57604051631f2a200560e01b815260040160405180910390fd5b600854600090611810906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613233565b90508581108061181f57508481115b1561183d57604051633b61151160e11b815260040160405180910390fd5b60008061184a8986611f04565b91509150611859610adb6120bd565b50600d54600360f81b60009081526002602052600080516020615751833981519152549091611893916001600160801b0390911690615575565b600080805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54919250906118ce908390615588565b90506000806118dc8561327b565b905060006118e9826133e8565b90506118f487613617565b6008546001600160801b038082168452600160801b90910416602083015261191b826133e8565b9250611933848261192c8187615575565b9190612b25565b9850505060006119518289856119499190615588565b8a9190612b25565b905060008411801561196257508086115b15611991576000611978858561192c858b615575565b905061198f81846119898c88615588565b88613720565b505b61199d60008b8a6125ca565b60408051898152602081018f90526001600160a01b038c16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a25050600160005550939998505050505050505050565b600080600054600114611a1c5760405162461bcd60e51b81526004016107009061553b565b6002600055600c54610100900460ff1615611a4a576040516313d0ff5960e31b815260040160405180910390fd5b611a52611ee3565b85600003611a7357604051631f2a200560e01b815260040160405180910390fd5b6000611a7d6129f2565b90506000611a92611a8c6120bd565b836120f8565b90507f0000000000000000000000000000000000000000000000000000000000000000611abd6120bd565b611ac79190615588565b93506000611ad485613809565b9050600080611ae48b868561385a565b80925081935050508060106000828254611afe9190615588565b9250508190555050611b1d84611b178c8487898a6130a0565b90612344565b945084891015611b405760405163c972651760e01b815260040160405180910390fd5b611b4a8588611f04565b5050611b5a8a828686868b613994565b6000611b67600288612595565b9050611b74818a8d6125ca565b60408051888152602081018890529081018c90528b9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a35050505050506001600055909590945092505050565b84611be481612b43565b6001600160a01b0316336001600160a01b031614611c1557604051632aab8bd360e01b815260040160405180910390fd5b611c228686868686612673565b505050505050565b6000818152600e60205260409020546001600160801b031615611c4a5750565b6000611c546120bd565b9050611c807f00000000000000000000000000000000000000000000000000000000000000008361561e565b151580611c8c57508181105b15611caa5760405163ecd29e8160e01b815260040160405180910390fd5b808203611cc25761149c81611cbd6129f2565b6120f8565b815b6000818152600e60205260409020546001600160801b0316828203611cee57611ceb6129f2565b90505b8015611cfe57610f2e84826120f8565b50611d297f000000000000000000000000000000000000000000000000000000000000000082615588565b9050611cc4565b60008054600114611d535760405162461bcd60e51b81526004016107009061553b565b60026000908155859003611d7a57604051631f2a200560e01b815260040160405180910390fd5b6000611d846129f2565b9050611d9087826120f8565b50611d9f610fa4600189612595565b600080600080611db08a868d613bf6565b93509350935093508060106000828254611dca9190615588565b9091555050428b1115611de557611de58a8484878f8a613df9565b6000611df2838a8a61288a565b9050808a1115611e155760405163c972651760e01b815260040160405180910390fd5b611e2060018d612595565b604080518e8152602081018490529081018d90526001600160a01b038b16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a360016000559b9a5050505050505050505050565b6040516001600160a01b03831660248201526044810182905261149c90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261403b565b3415611f0257604051631574f9f360e01b815260040160405180910390fd5b565b6000808215611fe457611f426001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087614110565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af1158015611faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd39190615522565b9150611fdd6129f2565b90506120b6565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190615522565b90506120a76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084614110565b8092506120b26129f2565b9150505b9250929050565b60006120e97f00000000000000000000000000000000000000000000000000000000000000004261561e565b6120f39042615575565b905090565b6000828152600e6020526040812080546001600160801b031615158061211d57504284115b156121415750506000828152600e60205260409020546001600160801b03166121fb565b61214a836127f9565b81546001600160801b0319166001600160801b03919091161781556000600281612175600188612595565b815260200190815260200160002054905060008111156121a8576121a881600061219f8288614148565b60008989613df9565b6000600260006121b9600289612595565b815260200190815260200160002054905060008111156121ec576121ec8160006121e38289614148565b60008a8a612def565b5050546001600160801b031690505b92915050565b60085460009081908190819061226e906001600160801b0380821691600160801b900416887f0000000000000000000000000000000000000000000000000000000000000000897f000000000000000000000000000000000000000000000000000000000000000061415d565b6008549093506000906122d6906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b90506122e18161419a565b6000806122ef89848a6142f4565b90925090506122fe8287615575565b945061230a8184614148565b6123149086615588565b95506123208189614148565b61232a908a615575565b96506123368189614148565b935050505092959194509250565b60006123598383670de0b6b3a7640000612b25565b9392505050565b6009546001600160801b031661239b610b888261238585670de0b6b3a76400006155ca565b600a546001600160801b031691908a6001614375565b600a80546001600160801b0319166001600160801b03929092169190911790556000838152600e602052604081209061240d90610b88906002906123e0600188612595565b81526020810191909152604001600020548354600160801b90046001600160801b031690888b6001614375565b81546001600160801b03908116600160801b9282168302178355600a5461244292610b889291048116908516888b6001614375565b600a80546001600160801b03928316600160801b029216919091179055612468886127f9565b600880546000906124839084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506124b0866127f9565b600880546010906124d2908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506124ff876127f9565b6125099083615632565b600980546001600160801b0319166001600160801b0383169081179091559092507f0000000000000000000000000000000000000000000000000000000000000000906125569087614148565b6125609190615588565b6008546001600160801b0316101561258b576040516318846de960e01b815260040160405180910390fd5b5050505050505050565b60006001600160f81b038211156125bf5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b0386168452909152812080548392906125fc908490615588565b90915550506000838152600260205260408120805483929061261f908490615588565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b836001600160a01b0316816001600160a01b031614612737576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff166127375760008581526004602090815260408083206001600160a01b038089168552908352818420908516845290915290205460001981146127355760008681526004602090815260408083206001600160a01b03808a16855290835281842090861684529091528120805485929061272f908490615575565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612769908490615575565b909155505060008581526001602090815260408083206001600160a01b0387168452909152812080548492906127a0908490615588565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b821061280b57600080fd5b5090565b600080612820846301e13380614148565b90506000612836670de0b6b3a764000085612344565b905061287c612872612850670de0b6b3a7640000846143f1565b61286c61285d8a87612344565b670de0b6b3a764000090614406565b90614436565b611b17898b612344565b925050505b95945050505050565b6000811561293257604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292b9190615522565b9050612359565b6129666001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611e80565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa1580156129ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128819190615522565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612a61573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190615522565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612ab7908490615575565b909155505060008381526002602052604081208054839290612ada908490615575565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101612666565b6000826000190484118302158202612b3c57600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000806000806000612c7e86613809565b600854909150612ce6906001600160801b0380821691600160801b9004168a847f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061448d565b6008549297509095509350600090600160801b90046001600160801b0316612d1657670de0b6b3a7640000612d78565b600854612d78906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b9050612d838161419a565b600080600080612d958d87878f6144fd565b93509350935093508184612da99190615575565b612db3908b615588565b9950612dbf8385615588565b612dc99089615588565b9750898989612dd88486615588565b995099509950995050505050505093509350935093565b600954600160801b90046001600160801b0316612e31610b8882612e1b86670de0b6b3a76400006155ca565b600b546001600160801b031691908b6000614375565b600b80546001600160801b0319166001600160801b03929092169190911790556000600281612e608287612595565b815260200190815260200160002054905083421015612e8657612e838882615588565b90505b6000612eb27f000000000000000000000000000000000000000000000000000000000000000086615575565b6000818152600e6020526040812060018101549293506001600160801b039092169190612ef5610b88612ee58e88614148565b6001600160801b03861690612344565b600b80549192508291601090612f1c908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508083612f4c91906155e1565b8260010160006101000a8154816001600160801b0302191690836001600160801b031602179055505050505050612f82876127f9565b612f8c90826155e1565b600980546001600160801b03928316600160801b029216919091179055612fb2846127f9565b60088054600090612fcd9084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550612ffa866127f9565b6008805460109061301c908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613054848661304f9190615575565b613617565b600d54600360f81b6000908152600260205260008051602061575183398151915254909161308d916001600160801b0390911690615575565b9050801561258b5761258b8682856145fc565b6000806130b9846130b18786614658565b899190612b25565b9050858111156130d0576130cd8682615575565b91505b5095945050505050565b60008060006130e88761327b565b905060006130f5826133e8565b60085490915061312f907f0000000000000000000000000000000000000000000000000000000000000000906001600160801b0316615575565b6009549094506001600160801b03161561317457600a54600954613167916001600160801b0391821691600160801b90910416614148565b6131719085615575565b93505b61317f848a88612b25565b935061318d61304f85615652565b6008546001600160801b038082168452600160801b90910416602083015260006131b6836133e8565b905060006131c5898385612b25565b90506131d18b8a61566e565b6131db908261566e565b905060008112156132245760006131fc6131f483615652565b85908c612b25565b90506132088188615575565b965061321381613617565b61321e81898d6145fc565b60009150505b93505050509550959350505050565b600080613244846301e13380614148565b9050600061325488888887614189565b905061287c6132638284612344565b613275670de0b6b3a76400008461466d565b90614148565b6132d860405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600160801b909104811660208301529181018490527f000000000000000000000000000000000000000000000000000000000000000060608201527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a0820152600954821660c0820152600a54909160e0830191613398911661469b565b81526009546001600160801b03600160801b90910481166020830152600b546040909201916133c7911661469b565b8152600b54600160801b90046001600160801b031660209091015292915050565b60008061340883610120015184610100015161234490919063ffffffff16565b60e084015160c085015161341b91612344565b613425919061566e565b905060008113156134835761346c836000015184602001518361345d8760a00151670de0b6b3a764000061466d90919063ffffffff16565b87604001518860600151614711565b8351849061347b908390615575565b905250613588565b60008112156135885760006134c2846000015185602001518660a00151670de0b6b3a76400006134b39190615575565b87604001518860600151614796565b91505080826134d090615652565b11156134dc57806134e5565b6134e582615652565b9050801561353c57613529846000015185602001518361351a8860a00151670de0b6b3a764000061466d90919063ffffffff16565b88604001518960600151614820565b84518590613538908390615588565b9052505b6135748161354984615652565b6135539190615575565b604086015161010087015161356791612344565b6101408701519190612b25565b84518590613583908390615588565b905250505b60006135b68460e00151670de0b6b3a76400006135a59190615575565b604086015160c08701519190612b25565b6135e4856101200151670de0b6b3a76400006135d29190615575565b60408701516101008801519190612b25565b6135ee919061566e565b84519091506135fe90829061568e565b808552608085015161360f91615575565b949350505050565b806000036136225750565b6008546001600160801b03167f000000000000000000000000000000000000000000000000000000000000000081101561366f5760405163585fe6df60e11b815260040160405180910390fd5b600061367b838361568e565b90507f00000000000000000000000000000000000000000000000000000000000000008110156136be5760405163585fe6df60e11b815260040160405180910390fd5b6136c7816127f9565b600880546001600160801b0319166001600160801b0392831617908190556136fe91610b88918491600160801b9091041685612b25565b600880546001600160801b03928316600160801b029216919091179055505050565b600080841161372f578261373a565b61373a838686612b25565b90508060000361374a57506109e2565b80858382111561376557839150613762878385612b25565b90505b61376e826127f9565b600d80546000906137899084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506137b6816127f9565b600d80546010906137d8908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506109cc8161304f90615652565b6000806138146120bd565b905080831161382457600061382e565b61382e8184615575565b9150612359827f0000000000000000000000000000000000000000000000000000000000000000614148565b60085460009081906138c3906001600160801b0380821691600160801b900416877f0000000000000000000000000000000000000000000000000000000000000000887f000000000000000000000000000000000000000000000000000000000000000061487f565b9150846138d08386612344565b11156138ef5760405163512095c760e01b815260040160405180910390fd5b600854600090613954906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b905061395f8161419a565b600061396d878684896148a0565b945090915061397e90508382615575565b6139889085615575565b93505050935093915050565b6009546139d790610b8890600160801b90046001600160801b03166139c184670de0b6b3a76400006155ca565b600b546001600160801b031691908a6001614375565b600b80546001600160801b0319166001600160801b03929092169190911790556000613a10610b88613a098887612344565b89866149a1565b600b80549192508291601090613a37908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555080600e6000613a686120bd565b8152602081019190915260400160009081206001018054909190613a969084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000613ac5876127f9565b600854613adb91906001600160801b03166155e1565b600880546001600160801b0319166001600160801b0383161790559050613b01886127f9565b60088054601090613b23908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613b50886127f9565b60098054601090613b72908490600160801b90046001600160801b0316615632565b82546101009290920a6001600160801b038181021990931691831602179091556009547f00000000000000000000000000000000000000000000000000000000000000009250613bc3911688614148565b613bcd9190615588565b816001600160801b0316101561258b576040516318846de960e01b815260040160405180910390fd5b6000806000806000613c0786613809565b90506000864210613c2f576000878152600e60205260409020546001600160801b0316613c31565b875b9050613d16600860000160009054906101000a90046001600160801b03166001600160801b0316600860000160109054906101000a90046001600160801b03166001600160801b03168b857f0000000000000000000000000000000000000000000000000000000000000000600e60007f00000000000000000000000000000000000000000000000000000000000000008f613ccd9190615575565b8152602081019190915260400160002054600160801b90046001600160801b0316878f7f00000000000000000000000000000000000000000000000000000000000000006149d7565b6008549298509096509450600090600160801b90046001600160801b0316613d4657670de0b6b3a7640000613da8565b600854613da8906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b9050613db38161419a565b600080613dc28c86858e6148a0565b97509092509050613dd3828a615575565b9850613ddf8183615588565b613de99088615575565b9650505050505093509350935093565b6009546001600160801b03166000600e81613e347f000000000000000000000000000000000000000000000000000000000000000087615575565b81526020810191909152604001600020546001600160801b03600160801b90910481169150613e8b90610b88908416613e7587670de0b6b3a76400006155ca565b600a546001600160801b031691908c6000614375565b600a80546001600160801b0319166001600160801b039283161790819055613ec991610b8891600160801b90048116908581169085168c6000614375565b600a80546001600160801b03928316600160801b029216919091179055613eef886127f9565b613ef990836155e1565b600980546001600160801b0319166001600160801b0392909216919091179055613f22856127f9565b60088054600090613f3d9084906001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613f6a876127f9565b60088054601090613f8c908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613fc88587613fbf9190615575565b61304f90615652565b600d54600360f81b60009081526002602052600080516020615751833981519152549091614001916001600160801b0390911690615575565b905080156140305760006140218a89856001600160801b031688896130a0565b905061402e8183876145fc565b505b505050505050505050565b6000614090826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a6c9092919063ffffffff16565b90508051600014806140b15750808060200190518101906140b191906156b6565b61149c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610700565b6040516001600160a01b03808516602483015283166044820152606481018290526109e29085906323b872dd60e01b90608401611eac565b600061235983670de0b6b3a764000084612b25565b600061417e878787614177670de0b6b3a76400008961466d565b8787614a7b565b979650505050505050565b60006128818261286c858888612b25565b6013546001600160801b03600160801b820481169116426141db7f000000000000000000000000000000000000000000000000000000000000000084615588565b11156141e657505050565b6000601282815481106141fb576141fb61559b565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b03169061422f8342615575565b601254909150878202830190600090614249886001615588565b614253919061561e565b905060405180604001604052804263ffffffff168152602001836001600160e01b03168152506012828154811061428c5761428c61559b565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061433b85611b1785817f000000000000000000000000000000000000000000000000000000000000000081670de0b6b3a7640000614335818d614148565b9061466d565b915061436b7f0000000000000000000000000000000000000000000000000000000000000000611b178487612344565b9050935093915050565b600081156143b4576143ad61438a8685614406565b6143a76143978688612344565b6143a1898b612344565b90614406565b906143f1565b9050612881565b8285036143c357506000612881565b6143e76143d0868561466d565b6143a76143dd8688612344565b614335898b612344565b9695505050505050565b600061235983670de0b6b3a764000084614aee565b6000806144138385615588565b90508381101561235957604051632d59cfbd60e01b815260040160405180910390fd5b60008160000361444f5750670de0b6b3a76400006121fb565b8260000361445f575060006121fb565b81600061446b85614b14565b9050818102614482670de0b6b3a7640000826156d3565b90506143e781614d28565b600080806144ae6144a6670de0b6b3a76400008961466d565b899087612b25565b90506144ba8888612344565b915081156144f0576144e18a8a846144da670de0b6b3a76400008b61466d565b8989614820565b92506144ed8382615588565b90505b9750975097945050505050565b6000808080614514670de0b6b3a76400008761466d565b9350614549878661192c8b611b17897f0000000000000000000000000000000000000000000000000000000000000000612344565b9350614575847f0000000000000000000000000000000000000000000000000000000000000000612344565b9150600061459661458e670de0b6b3a76400008a61466d565b8a9088612b25565b90506145c2817f0000000000000000000000000000000000000000000000000000000000000000612344565b93506145ee847f0000000000000000000000000000000000000000000000000000000000000000612344565b915050945094509450949050565b600061460f61460a8361327b565b6133e8565b600080805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b549192509061464a908590615588565b9050610f2e85838387613720565b60006123598383670de0b6b3a7640000614aee565b60008282111561468f5760405162d6e85160e61b815260040160405180910390fd5b600061360f8385615575565b600080670de0b6b3a76400006146af6120bd565b6146b991906155ca565b90508083116146c95760006146d3565b6146d38184615575565b915061235961470a670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006155ca565b8390614148565b60008061471e8484614148565b9050600061472f82858b898c614eb3565b905061473f8661286c8a8a614406565b97506000614766614758670de0b6b3a7640000896143f1565b61286c85613275868e61466d565b90506147728186614148565b9050808a111561478957614786818b615575565b93505b5050509695505050505050565b600080806147a48585614148565b905060006147b582868b8a8c614eb3565b905060006147ea6147ce670de0b6b3a76400008a614148565b61286c6147e3670de0b6b3a764000087615588565b8590614148565b905060006147f88288614148565b90506148048b82615575565b61480e838c615575565b95509550505050509550959350505050565b60008061482d8484614148565b9050600061483e82858b898c614eb3565b905061484e8661286c8a8a61466d565b97506000614867614758670de0b6b3a7640000896143f1565b90506148738186614148565b9050614786818b61466d565b600061417e878787614899670de0b6b3a76400008961466d565b8787614711565b60008080806148b7670de0b6b3a76400008761466d565b90506148ec878661192c8b611b17867f0000000000000000000000000000000000000000000000000000000000000000612344565b9350614918847f0000000000000000000000000000000000000000000000000000000000000000612344565b9150600061493161458e670de0b6b3a76400008a61466d565b905061495d817f0000000000000000000000000000000000000000000000000000000000000000612344565b9350614989847f0000000000000000000000000000000000000000000000000000000000000000612344565b6149939084615588565b925050509450945094915050565b6000816000036149b357506000612359565b61360f826132756149d086611b17670de0b6b3a76400008561466d565b879061466d565b600080806149f86149f0670de0b6b3a76400008b61466d565b8b9087612b25565b90508815614a3a57614a0a8a8a612344565b9150614a2b8c8c84614a24670de0b6b3a76400008d61466d565b8989614711565b9250614a378382615588565b90505b85871115614a5d57614a4d818789612b25565b9050614a5a838789612b25565b92505b99509950999650505050505050565b606061360f8484600085614eda565b600080614a888484614148565b90506000614a9982858b898c614eb3565b9050614ab38661286c614aac8c8b614406565b8790612344565b9850614abf828a612344565b98506000614ae2614ad8670de0b6b3a7640000896143f1565b61286c848d61466d565b9050614786898261466d565b6000826000190484118302158202614b0557600080fd5b50910281810615159190040190565b600080821215614b3757604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e198213614d4357506000919050565b680755bf798b4a1bf1e58212614d6c5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006143e7614ec28385614436565b6143a1614ed38661286c8a8a612344565b8990612344565b606082471015614f3b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610700565b600080866001600160a01b03168587604051614f579190615701565b60006040518083038185875af1925050503d8060008114614f94576040519150601f19603f3d011682016040523d82523d6000602084013e614f99565b606091505b509150915061417e878383876060831561501457825160000361500d576001600160a01b0385163b61500d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610700565b508161360f565b61360f83838151156150295781518083602001fd5b8060405162461bcd60e51b8152600401610700919061571d565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156150825780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156150bb5781810151838201526020016150a3565b50506000910152565b6000602082840312156150d657600080fd5b815167ffffffffffffffff808211156150ee57600080fd5b818401915084601f83011261510257600080fd5b8151818111156151145761511461508a565b604051601f8201601f19908116603f0116810190838211818310171561513c5761513c61508a565b8160405282815287602084870101111561515557600080fd5b61417e8360208301602088016150a0565b6001600160a01b038116811461517b57600080fd5b50565b60006020828403121561519057600080fd5b813561235981615166565b801515811461517b57600080fd5b6000602082840312156151bb57600080fd5b81356123598161519b565b600080600080608085870312156151dc57600080fd5b843593506020850135925060408501356151f581615166565b915060608501356152058161519b565b939692955090935050565b60008083601f84011261522257600080fd5b50813567ffffffffffffffff81111561523a57600080fd5b6020830191508360208260051b85010111156120b657600080fd5b6000806000806000806080878903121561526e57600080fd5b863561527981615166565b9550602087013561528981615166565b9450604087013567ffffffffffffffff808211156152a657600080fd5b6152b28a838b01615210565b909650945060608901359150808211156152cb57600080fd5b506152d889828a01615210565b979a9699509497509295939492505050565b6000806000806080858703121561530057600080fd5b84359350602085013561531281615166565b9250604085013561532281615166565b9396929550929360600135925050565b6000806000806080858703121561534857600080fd5b84359350602085013561535a81615166565b925060408501359150606085013561520581615166565b600080600080600060a0868803121561538957600080fd5b85359450602086013593506040860135925060608601356153a981615166565b915060808601356153b98161519b565b809150509295509295909350565b600080604083850312156153da57600080fd5b82356153e581615166565b915060208301356153f58161519b565b809150509250929050565b600080600080600080600060e0888a03121561541b57600080fd5b873561542681615166565b9650602088013561543681615166565b955060408801356154468161519b565b945060608801359350608088013560ff8116811461546357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561549557600080fd5b8335925060208401356154a781615166565b929592945050506040919091013590565b600080600080600060a086880312156154d057600080fd5b8535945060208601356154e281615166565b935060408601356154f281615166565b92506060860135915060808601356153b981615166565b60006020828403121561551b57600080fd5b5035919050565b60006020828403121561553457600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156121fb576121fb61555f565b808201808211156121fb576121fb61555f565b634e487b7160e01b600052603260045260246000fd5b6000600182016155c3576155c361555f565b5060010190565b80820281158282048414176121fb576121fb61555f565b6001600160801b038281168282160390808211156156015761560161555f565b5092915050565b634e487b7160e01b600052601260045260246000fd5b60008261562d5761562d615608565b500690565b6001600160801b038181168382160190808211156156015761560161555f565b6000600160ff1b82016156675761566761555f565b5060000390565b81810360008312801583831316838312821617156156015761560161555f565b80820182811260008312801582168215821617156156ae576156ae61555f565b505092915050565b6000602082840312156156c857600080fd5b81516123598161519b565b6000826156e2576156e2615608565b600160ff1b8214600019841416156156fc576156fc61555f565b500590565b600082516157138184602087016150a0565b9190910192915050565b602081526000825180602084015261573c8160408501602087016150a0565b601f01601f1916919091016040019291505056fe3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1fa26469706673582212201d9f202ecea9e143076eea736b609892ffff5a5db82549ff2a0a42b525a0bb4e64736f6c63430008130033a264697066735822122085b46d1738a859ba5b692832319e284b18c9c242801edc9915c4941a033599be64736f6c63430008130033", - "sourceMap": "910:1538:9:-:0;;;1013:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1051:12:9;;;910:1538;;14:307:156;101:6;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:156;;231:42;;221:70;;287:1;284;277:12;221:70;310:5;14:307;-1:-1:-1;;;14:307:156:o;:::-;910:1538:9;;;;;;;;;;;;", + "object": "0x60a060405234801561001057600080fd5b506040516170bf3803806170bf83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161703561008a6000396000607301526170356000f3fe60806040523480156200001157600080fd5b50600436106200002e5760003560e01c8063e3420f4f1462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003ce565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b616b1380620004ed83390190565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102408112156200026957600080fd5b6101c0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a083015260c088013560c0830152620002dd60e089016200012c565b60e0830152610100620002f2818a016200012c565b90830152610120620003078a8a830162000149565b81840152506101808801356101408301526101a0880135610160830152819650620003348189016200012c565b955050506101e086013592506200034f61020087016200012c565b915061022086013567ffffffffffffffff8111156200036d57600080fd5b6200037b88828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003c35781516001600160a01b0316875295820195908201906001016200039c565b509495945050505050565b86516001600160a01b0316815260006102606020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c089015160c084015260e08901516200043760e08501826001600160a01b03169052565b50610100898101516001600160a01b038116858301525050610120898101518051858301526020810151610140860152604081015161016086015250506101408901516101808401526101608901516101a08401526001600160a01b0388166101c0840152866101e0840152620004ba6102008401876001600160a01b03169052565b6001600160a01b03851661022084015280610240840152620004df8184018562000388565b999850505050505050505056fe6102a060405260016000553480156200001757600080fd5b5060405162006b1338038062006b138339810160408190526200003a916200077c565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260608101516101c05260a08101516000036200018657604051635428734d60e01b815260040160405180910390fd5b60a081018051610120525160808201511080620001b757508060a001518160800151620001b49190620008c8565b15155b15620001d65760405163253fffcf60e11b815260040160405180910390fd5b60808101516101405260c08101516101605260208101516101805260e0810151601180546001600160a01b0319166001600160a01b03928316179055610100820151166102405261012081015151670de0b6b3a764000010806200024a5750670de0b6b3a764000081610120015160200151115b80620002665750670de0b6b3a764000081610120015160400151115b1562000285576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101e0528051602001516102005251604001516102205261016001516102605260005b8461014001518110156200033d576040805180820190915263ffffffff4281168252600060208301818152601280546001810182559252925192516001600160e01b03166401000000000292909116919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490910155806200033481620008eb565b915050620002b0565b5050506001600160a01b0388166102805250620003609450506200058392505050565b86602001511462000384576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000913565b6001600160a01b031686600001516001600160a01b0316146200041f57604051630722152560e11b815260040160405180910390fd5b85516102805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c91906200093a565b620004ba576040516340b27c2160e11b815260040160405180910390fd5b60005b815181101562000576576000828281518110620004de57620004de6200095e565b60200260200101519050610280516001600160a01b0316816001600160a01b03161480620005205750610100516001600160a01b0316816001600160a01b0316145b156200053f5760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19166001179055806200056d81620008eb565b915050620004bd565b505050505050506200098e565b610280516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005fc919062000974565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156200063d576200063d62000601565b60405290565b6001600160a01b03811681146200065957600080fd5b50565b8051620006698162000643565b919050565b6000606082840312156200068157600080fd5b604051606081016001600160401b0381118282101715620006a657620006a662000601565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006df57600080fd5b815160206001600160401b0380831115620006fe57620006fe62000601565b8260051b604051601f19603f8301168101818110848211171562000726576200072662000601565b6040529384528581018301938381019250878511156200074557600080fd5b83870191505b8482101562000771578151620007618162000643565b835291830191908301906200074b565b979650505050505050565b6000806000806000808688036102608112156200079857600080fd5b6101c080821215620007a957600080fd5b620007b362000617565b9150620007c0896200065c565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a083015260c089015160c08301526200080c60e08a016200065c565b60e083015261010062000821818b016200065c565b90830152610120620008368b8b83016200066e565b81840152506101808901516101408301526101a089015161016083015281975062000863818a016200065c565b965050506101e087015193506200087e61020088016200065c565b92506200088f61022088016200065c565b6102408801519092506001600160401b03811115620008ad57600080fd5b620008bb89828a01620006cd565b9150509295509295509295565b600082620008e657634e487b7160e01b600052601260045260246000fd5b500690565b6000600182016200090c57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200092657600080fd5b8151620009338162000643565b9392505050565b6000602082840312156200094d57600080fd5b815180151581146200093357600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200098757600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051615eee62000c25600039600081816120df0152818161217e0152818161220001528181612c1e01528181612c9f01528181612cdf0152612d720152600061458f0152600081816105590152818161066901528181610cb90152610d1f015260008181612346015281816124200152818161471f01528181614b5e01528181614bd701528181614f8e0152614fff0152600081816111b201528181612318015281816123f201528181613dbf01528181614bab0152614fd30152600081816146db01528181614b320152614f6201526000818161074701528181610f97015281816116670152818161184f01528181611b190152611e1d015260008181610a7c01528181610ac701528181610be10152818161383601528181613b6101528181613bb0015281816143ae015281816147eb015281816148dd01526149190152600081816107ff01528181610b50015281816118b0015281816125570152818161259f015281816130fe0152818161381001528181613d150152614121015260008181610b93015281816118f201528181612535015281816125c0015281816130dc0152818161385c01528181613cf301526140ad01526000818161088101528181610b72015281816110a90152818161113a015281816118d101528181611b8301528181611edd015281816124980152818161333c015281816140d20152818161421401528181614a760152614d23015260008181611d1e01528181611dc701526122450152600061209b01526000818161038601526113d601526000612ff801526000612fbb015260006101570152615eee6000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063c23632a71161006f578063c23632a7146104a8578063c326a903146104c8578063c576201d146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a22cb46514610468578063ab033ea91461048857610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a2914610272578063116606451461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f929190615731565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe82615741565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016157b2565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b36600461586c565b61054e565b005b34801561027e57600080fd5b5061027061028d366004615897565b610692565b6102a56102a03660046158b4565b6106df565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615943565b610939565b3480156102eb57600080fd5b506102706102fa3660046159d8565b6109f7565b61031261030d3660046158b4565b610a0a565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b366004615897565b610c6c565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c33660046158b4565b610d50565b3480156103d457600080fd5b506102706103e3366004615a20565b610f1f565b3480156103f457600080fd5b50610312610403366004615a5f565b610f6d565b34801561041457600080fd5b50610270610423366004615ab5565b611284565b34801561043457600080fd5b50610270610443366004615aee565b6112fc565b34801561045457600080fd5b50610270610463366004615b6e565b61154a565b34801561047457600080fd5b50610270610483366004615ab5565b61155b565b34801561049457600080fd5b506102706104a336600461586c565b6115c7565b3480156104b457600080fd5b506102a56104c33660046158b4565b61163b565b6103126104d6366004615a5f565b6117f2565b6102a56104e93660046158b4565b611aba565b3480156104fa57600080fd5b50610270610509366004615ba6565b611c9d565b34801561051a57600080fd5b50610270610529366004615bf7565b611ced565b34801561053a57600080fd5b50610312610549366004615a5f565b611df3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615c10565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083612001565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c8054911515600160881b0260ff60881b19909216919091179055565b60008060005460011461070d5760405162461bcd60e51b815260040161070490615c29565b60405180910390fd5b6002600055600c54600160881b900460ff161561073d576040516313d0ff5960e31b815260040160405180910390fd5b610745612064565b7f00000000000000000000000000000000000000000000000000000000000000008610156107865760405163211ddda360e11b815260040160405180910390fd5b6000806107938886612085565b9150915060006107a161223e565b90506107ad8183612279565b5060008060006107bd868661250e565b600854919a509295509093509091506107e7908390600160801b90046001600160801b0316615c63565b610824846107f361263f565b6107fd9190615c76565b7f000000000000000000000000000000000000000000000000000000000000000090612667565b11156108435760405163512095c760e01b815260040160405180910390fd5b868b11156108645760405163c972651760e01b815260040160405180910390fd5b80601060008282546108769190615c76565b909155506108a690507f000000000000000000000000000000000000000000000000000000000000000085615c76565b97506108b683888488888d612683565b60006108c360018a612906565b90506108d0818c8a61293b565b604080518a8152602081018f90529081018990528d9082906001600160a01b038e16907f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b39060600160405180910390a350505050505050505b6001600055909590945092505050565b6001600160a01b038616158061095657506001600160a01b038516155b156109745760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109945760405163174861a760e31b815260040160405180910390fd5b60005b838110156109ee576109dc8585838181106109b4576109b4615c89565b9050602002013588888686868181106109cf576109cf615c89565b90506020020135336129e4565b806109e681615c9f565b915050610997565b50505050505050565b610a0484848484336129e4565b50505050565b60008054600114610a2d5760405162461bcd60e51b815260040161070490615c29565b6002600055610a3a612064565b600c54600160801b900460ff1615610a6557604051637983c05160e01b815260040160405180910390fd5b600080610a728785612085565b9092509050610aa27f00000000000000000000000000000000000000000000000000000000000000006002615cb8565b821015610ac257604051632afb507160e21b815260040160405180910390fd5b610aed7f00000000000000000000000000000000000000000000000000000000000000006002615cb8565b610af79083615c63565b9250610b0a610b0461223e565b82612279565b50600c805460ff60801b1916600160801b179055610b2782612b6a565b600880546001600160801b0319166001600160801b0392909216919091179055610bbc610bb7837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b80565b612b6a565b600880546001600160801b03928316600160801b029216919091179055610c056000807f000000000000000000000000000000000000000000000000000000000000000061293b565b610c116000868561293b565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c8f5760405162461bcd60e51b815260040161070490615c29565b60026000908155338152600f602052604090205460ff16158015610cdc5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610cf357506011546001600160a01b03163314155b15610d10576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d44817f000000000000000000000000000000000000000000000000000000000000000085612bea565b60016000559392505050565b600080600054600114610d755760405162461bcd60e51b815260040161070490615c29565b60026000908155610d84612d52565b9050610d91610b0461223e565b50610d9b81612de5565b600d548792506001600160801b031680831115610dbf57806001600160801b031692505b82600003610dd557600080935093505050610929565b610de4600360f81b3385612ebf565b600d546001600160801b03600160801b909104811690600090610e0c90869084908616612f5f565b9050610e1785612b6a565b610e219084615ccf565b600d80546001600160801b0319166001600160801b0392909216919091179055610e4a81612b6a565b600d8054601090610e6c908490600160801b90046001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610e9b818989612bea565b955085610ea88a87612667565b1115610ec75760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050506001600055909590945092505050565b83610f2981612f7d565b6001600160a01b0316336001600160a01b031614610f5a57604051632aab8bd360e01b815260040160405180910390fd5b610f668585858561303a565b5050505050565b60008054600114610f905760405162461bcd60e51b815260040161070490615c29565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015610fd65760405163211ddda360e11b815260040160405180910390fd5b6000610fe0612d52565b9050610fec8782612279565b50611002610ffb600289612906565b3388612ebf565b6000806000806110138a868d6130a7565b6008549397509195509350915061103b908490600160801b90046001600160801b0316615c63565b611047856107f361263f565b11156110665760405163512095c760e01b815260040160405180910390fd5b8a4210156111305780601060008282546110809190615c76565b90915550600090506110928284615c63565b90508b6110a28c868489856131ad565b60006110ce7f000000000000000000000000000000000000000000000000000000000000000083615c63565b6000818152600e6020526040812060010154919250600f9190910b906110ff908f908a908a90889088908f90613335565b6000828152600e602052604090206001015461112290600f83810b91900b6134d3565b61112b89612de5565b505050505b6000600e8161115f7f00000000000000000000000000000000000000000000000000000000000000008f615c63565b815260208101919091526040016000908120546001600160801b03169150428d111561118b57866111a4565b60008d8152600e60205260409020546001600160801b03165b905060006111d68d8685858c7f00000000000000000000000000000000000000000000000000000000000000006135e0565b905060006111e5828d8d612bea565b90508c8110156112085760405163c972651760e01b815260040160405180910390fd5b8e8e611215600283612906565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f848685604051611263939291909283526020830191909152604082015260600190565b60405180910390a3505060016000559e9d5050505050505050505050505050565b6011546001600160a01b031633146112ae576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b8342111561131d5760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166113445760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611470573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b0316146114ae57604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b03891660009081526007602052604081208054916114d283615c9f565b90915550506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b6115568383833361303a565b505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b031633146115f1576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146116605760405162461bcd60e51b815260040161070490615c29565b60026000557f00000000000000000000000000000000000000000000000000000000000000008610156116a65760405163211ddda360e11b815260040160405180910390fd5b60006116b0612d52565b90506116bd610b0461223e565b506116c781612de5565b6002602052600080516020615e9983398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611722916001600160801b0390911690615c63565b905060006117308284615c76565b905061173e6000338c612ebf565b600061174d8b86848787613632565b96509050611760600360f81b8a8861293b565b61176b818a8a612bea565b9650868a111561178e5760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146118155760405162461bcd60e51b815260040161070490615c29565b6002600055600c54600160881b900460ff1615611845576040516313d0ff5960e31b815260040160405180910390fd5b61184d612064565b7f000000000000000000000000000000000000000000000000000000000000000086101561188e5760405163211ddda360e11b815260040160405180910390fd5b600061191661189b61263f565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613734565b90508581108061192557508481115b1561194357604051633b61151160e11b815260040160405180910390fd5b6000806119508986612085565b9150915061195f610b0461223e565b50600d54600360f81b600090815260026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5490916119ab916001600160801b0390911690615c63565b60008080526002602052600080516020615e9983398151915254919250906119d4908390615c76565b90506000806119e28561376f565b905060006119ef826138d6565b90506119fa87613b48565b6008546001600160801b038082168452600b54600160801b90819004600f0b6020860152909104166040830152611a30826138d6565b9250611a488482611a418187615c63565b9190612f5f565b98505050611a5860008a8961293b565b611a6184612de5565b60408051888152602081018e90526001600160a01b038b16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a250506001600055509298975050505050505050565b600080600054600114611adf5760405162461bcd60e51b815260040161070490615c29565b6002600055600c54600160881b900460ff1615611b0f576040516313d0ff5960e31b815260040160405180910390fd5b611b17612064565b7f0000000000000000000000000000000000000000000000000000000000000000861015611b585760405163211ddda360e11b815260040160405180910390fd5b6000611b62612d52565b90506000611b6e61223e565b90506000611b7c8284612279565b9050611ba87f000000000000000000000000000000000000000000000000000000000000000083615c76565b9450600080611bc18b8685670de0b6b3a7640000613ccd565b6010805493995091945092508291600090611bdd908490615c76565b90915550505084891015611c045760405163c972651760e01b815260040160405180910390fd5b611c0e8588612085565b5050611c1d8a8683878a613df1565b6000611c2a600288612906565b9050611c37818a8d61293b565b60408051888152602081018890529081018c90528b9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a35050505050506001600055909590945092505050565b84611ca781612f7d565b6001600160a01b0316336001600160a01b031614611cd857604051632aab8bd360e01b815260040160405180910390fd5b611ce586868686866129e4565b505050505050565b6000818152600e60205260409020546001600160801b031615611d0d5750565b6000611d1761223e565b9050611d437f000000000000000000000000000000000000000000000000000000000000000083615d0c565b151580611d4f57508181105b15611d6d5760405163ecd29e8160e01b815260040160405180910390fd5b808203611d855761155681611d80612d52565b612279565b815b6000818152600e60205260409020546001600160801b0316828203611db157611dae612d52565b90505b8015611dc157610f668482612279565b50611dec7f000000000000000000000000000000000000000000000000000000000000000082615c76565b9050611d87565b60008054600114611e165760405162461bcd60e51b815260040161070490615c29565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015611e5c5760405163211ddda360e11b815260040160405180910390fd5b6000611e66612d52565b9050611e728782612279565b50611e81610ffb600189612906565b600080600080611e928a868d61403f565b93509350935093508a421015611f66578060106000828254611eb49190615c76565b9091555060009050611ec68284615c76565b90508b611ed68c868489856141aa565b6000611f027f000000000000000000000000000000000000000000000000000000000000000083615c63565b6000818152600e60205260409020600190810154919250600f9190910b90611f35908f908a908a90889088908f90613335565b6000828152600e6020526040902060010154611f5890600f83810b91900b6134d3565b611f6189612de5565b505050505b6000611f73838a8a612bea565b9050808a1115611f965760405163c972651760e01b815260040160405180910390fd5b611fa160018d612906565b604080518e8152602081018490529081018d90526001600160a01b038b16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a360016000559b9a5050505050505050505050565b6040516001600160a01b03831660248201526044810182905261155690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614414565b341561208357604051631574f9f360e01b815260040160405180910390fd5b565b6000808215612165576120c36001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330876144e9565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af1158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190615c10565b915061215e612d52565b9050612237565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190615c10565b90506122286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846144e9565b809250612233612d52565b9150505b9250929050565b600061226a7f000000000000000000000000000000000000000000000000000000000000000042615d0c565b6122749042615c63565b905090565b6000828152600e6020526040812080546001600160801b031615158061229e57504284115b156122b457546001600160801b03169050612508565b6122bd83612b6a565b81546001600160801b0319166001600160801b039190911617815560006002816122e78288612906565b81526020019081526020016000205490506000808211156123b157600061230e8387614521565b9050600061233c827f0000000000000000000000000000000000000000000000000000000000000000612667565b9050600061236a827f0000000000000000000000000000000000000000000000000000000000000000612667565b9050806010600082825461237e9190615c76565b9091555061238e90508183615c63565b6123989084615c76565b92506123a98560008560008d6131ad565b600193505050505b6000600260006123c260018a612906565b8152602001908152602001600020549050600081111561248b5760006123e88288614521565b90506000612416827f0000000000000000000000000000000000000000000000000000000000000000612667565b90506000612444827f0000000000000000000000000000000000000000000000000000000000000000612667565b905080601060008282546124589190615c76565b9091555061246890508183615c63565b6124729084615c63565b92506124838460008560008e6141aa565b600194505050505b81156125005760006124bd7f000000000000000000000000000000000000000000000000000000000000000089615c63565b6000818152600e6020526040902060010180546001600160801b0319811691829055919250600f91820b916124f49183910b6134d3565b6124fd88612de5565b50505b859450505050505b92915050565b60008060008061257b61251f61263f565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614536565b925060006125e461258a61263f565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614562565b90506125ef81614573565b6000806125fd89848a6146cd565b909250905061260c8287615c63565b94506126188186615c76565b955061262581848a612f5f565b9350612631848a615c63565b965050505092959194509250565b600854600b54600091612274916001600160801b0390911690600160801b9004600f0b61474d565b600061267c8383670de0b6b3a7640000612f5f565b9392505050565b6009546001600160801b03166126be610bb7826126a885670de0b6b3a7640000615cb8565b600a546001600160801b031691908a600161476a565b600a80546001600160801b0319166001600160801b03929092169190911790556000838152600e602052604081209061273090610bb790600290612703600188612906565b81526020810191909152604001600020548354600160801b90046001600160801b031690888b600161476a565b81546001600160801b03908116600160801b9282168302178355600a5461276592610bb79291048116908516888b600161476a565b600a80546001600160801b03928316600160801b02921691909117905561278b88612b6a565b600880546000906127a69084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506127d386612b6a565b600880546010906127f5908490600160801b90046001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061282287612b6a565b61282c9083615d20565b600980546001600160801b0319166001600160801b0383161790556001820154909250600f0b60006128766128618b89612667565b61286c8b6002615cb8565b610bb79190615c63565b6001840180549192508291600090612892908490600f0b615d40565b82546001600160801b039182166101009390930a92830291909202199091161790555060018301546128cb90600f84810b91900b6134d3565b6128d4876147e4565b6128f1576040516318846de960e01b815260040160405180910390fd5b6128fa87612de5565b50505050505050505050565b60006001600160f81b038211156129305760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b03861684529091528120805483929061296d908490615c76565b909155505060008381526002602052604081208054839290612990908490615c76565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b836001600160a01b0316816001600160a01b031614612aa8576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff16612aa85760008581526004602090815260408083206001600160a01b03808916855290835281842090851684529091529020546000198114612aa65760008681526004602090815260408083206001600160a01b03808a168552908352818420908616845290915281208054859290612aa0908490615c63565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612ada908490615c63565b909155505060008581526001602090815260408083206001600160a01b038716845290915281208054849290612b11908490615c76565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b8210612b7c57600080fd5b5090565b600080612b91846301e13380614521565b9050612bdd612bcd612bab670de0b6b3a76400008661484f565b612bb58885612667565b612bc790670de0b6b3a7640000615c76565b90614864565b612bd7888a612667565b90612667565b9150505b95945050505050565b60008115612c9257604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b9190615c10565b905061267c565b612cc66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486612001565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be19190615c10565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612dc1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122749190615c10565b6002602052600080516020615e9983398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091612e40916001600160801b0390911690615c63565b90506000612e4e8284615c76565b90506000612e63612e5e8661376f565b6138d6565b90506000612e72858385612f5f565b9050600080612e80886148bb565b905082811115612e9757612e948382615c63565b91505b6000821180612ea4575083155b15612eb557612eb582858789614960565b5050505050505050565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612ef1908490615c63565b909155505060008381526002602052604081208054839290612f14908490615c63565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016129d7565b6000826000190484118302158202612f7657600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b60008060008060006130b886614a49565b90506131226130c561263f565b600854600160801b90046001600160801b03168a847f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000614a9a565b91965094509250600061313661258a61263f565b905061314181614573565b6000806000806131538d87878f614b0a565b935093509350935081846131679190615c63565b613171908b615c76565b995061317d8385615c76565b6131879089615c76565b97508989896131968486615c76565b995099509950995050505050505093509350935093565b600954600160801b90046001600160801b03166131ef610bb7826131d985670de0b6b3a7640000615cb8565b600b546001600160801b031691908a600061476a565b600b80546001600160801b0319166001600160801b039290921691909117905561321886612b6a565b6132229082615ccf565b600980546001600160801b03928316600160801b0292169190911790555061324983612b6a565b600880546000906132649084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061329c82846132979190615c63565b614c09565b600b80546010906132b8908490600160801b9004600f0b615d40565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055506132e884612b6a565b6008805460109061330a908490600160801b90046001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b60006133617f000000000000000000000000000000000000000000000000000000000000000085615c63565b9050600060026000613374600188612906565b8152602001908152602001600020549050600060026000613396600289612906565b81526020019081526020016000205490508160001480156133b5575080155b156133de576000838152600e6020526040902060010180546001600160801b03191690556128fa565b60006134228b6133ee8c89612667565b6133f9906002615cb8565b8b6134048c8b612667565b61340e9190615c76565b6134189190615c63565b610bb79190615c76565b9050841561347a576000848152600e60205260408120600101805483929061344e908490600f0b615d6d565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055506134c6565b6000848152600e60205260408120600101805483929061349e908490600f0b615d40565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b5050505050505050505050565b80821380156134e3575060008212155b156135635760006134f48282614c33565b6134fe9084615d9a565b600c5490915061351f906132979083906001600160801b0316600f0b614c49565b600c805460009061353a9084906001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b8181131561068e57600082126135d25761357c82614c09565b61358582614c09565b61358f9190615d6d565b600c80546000906135aa9084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050565b61358f613297826000614c33565b6000806135f9856135f18887614c58565b8a9190612f5f565b9050613606888486612f5f565b6136109082615c76565b905086811115613627576136248782615c63565b91505b509695505050505050565b60008060006136408761376f565b9050600061364d826138d6565b905061365f61365a612d52565b6148bb565b935061366c848a88612f5f565b935061367f61367a85615dba565b613b48565b6008546001600160801b038082168452600b54600160801b90819004600f0b602086015290910416604083015260006136b7836138d6565b905060006136c6898385612f5f565b90506136d28b8a615d9a565b6136dc9082615d9a565b905060008112156137255760006136fd6136f583615dba565b85908c612f5f565b90506137098188615c63565b965061371481613b48565b61371f81898d614c6d565b60009150505b93505050509550959350505050565b60008061374387878786614562565b9050612bdd613757826301e1338087614cb2565b61376983670de0b6b3a7640000615c63565b90614521565b6137cc60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600b54600160801b90819004600f0b6020850152909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600954821660e0820152600a54909161010083019161389f9116614cd8565b81526009546001600160801b03600160801b90910481166020830152600b546040909201916138ce9116614cd8565b905292915050565b6000806138f683610140015184610120015161266790919063ffffffff16565b61010084015160e085015161390a91612667565b6139149190615d9a565b9050600061392a8460000151856020015161474d565b905060008213156139cc57600061396c8286604001518760a001518860c00151670de0b6b3a764000061395d9190615c63565b89606001518a60800151614d4e565b915061397a90508184614dd1565b905080156139c6576139b3828660400151838860c00151670de0b6b3a76400006139a49190615c63565b89606001518a60800151614de0565b855186906139c2908390615c63565b9052505b50613a8a565b6000821215613a8a576139de82615dba565b91506000613a128286604001518760c00151670de0b6b3a7640000613a039190615c63565b88606001518960800151614e14565b9150613a2090508184614dd1565b90508015613a6c57613a59828660400151838860c00151670de0b6b3a7640000613a4a9190615c63565b89606001518a60800151614e9e565b85518690613a68908390615c76565b9052505b613a768184615c63565b85518690613a85908390615c76565b905250505b6000613ab9856101000151670de0b6b3a7640000613aa89190615c63565b606087015160e08801519190612f5f565b613ae7866101400151670de0b6b3a7640000613ad59190615c63565b60608801516101208901519190612f5f565b613af19190615d9a565b90506000818660000151613b059190615dd6565b90508560a00151811215613b2c5760405163aeeb825d60e01b815260040160405180910390fd5b80865260a0860151613b3e9082615c63565b9695505050505050565b80600003613b535750565b6008546001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000811015613ba05760405163585fe6df60e11b815260040160405180910390fd5b6000613bac8383615dd6565b90507f0000000000000000000000000000000000000000000000000000000000000000811215613bef5760405163585fe6df60e11b815260040160405180910390fd5b613bf881612b6a565b600880546001600160801b0319166001600160801b0392909216919091179055600b54600090600160801b9004600f0b818112613c4157613c3a838286612f5f565b9150613c61565b613c55613c4d82615dba565b849086612f5f565b613c5e90615dba565b91505b613c6a82614c09565b600b80546001600160801b03908116600160801b938216840217909155600854613ca992610bb792910416613c9f878561474d565b611a41878761474d565b600880546001600160801b03928316600160801b0292169190911790555050505050565b6000806000613d39613cdd61263f565b600854600160801b90046001600160801b0316897f00000000000000000000000000000000000000000000000000000000000000008a7f0000000000000000000000000000000000000000000000000000000000000000614f19565b915086613d468388612667565b1115613d655760405163512095c760e01b815260040160405180910390fd5b6000613d7261258a61263f565b9050613d7d81614573565b6000613d8b8987848b614f3a565b9450909150613d9c90508382615c63565b613da69085615c63565b9350613de388612bd78b613dba8789615c63565b8b8d8e7f00000000000000000000000000000000000000000000000000000000000000006135e0565b945050509450945094915050565b600954613e3490610bb790600160801b90046001600160801b0316613e1e84670de0b6b3a7640000615cb8565b600b546001600160801b0316919089600161476a565b600b80546001600160801b0319166001600160801b03929092169190911790556000613e5f84612b6a565b600854613e7591906001600160801b0316615ccf565b600880546001600160801b0319166001600160801b0383161790559050613e9b86612b6a565b60088054601090613ebd908490600160801b90046001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613eea86612b6a565b60098054601090613f0c908490600160801b90046001600160801b0316615d20565b82546101009290920a6001600160801b03818102199093169183160217909155600b54600854600160801b909104600f0b911612159050613f605760405163585fe6df60e11b815260040160405180910390fd5b6000613f6a61223e565b6000818152600e6020526040812060010154919250600f9190910b90613f908989615c76565b9050613f9b81612b6a565b6000848152600e602052604081206001018054909190613fbf908490600f0b615d6d565b82546001600160801b039182166101009390930a9283029190920219909116179055506000838152600e602052604090206001015461400590600f84810b91900b6134d3565b61400e866147e4565b61402b576040516318846de960e01b815260040160405180910390fd5b61403486612de5565b505050505050505050565b600080600080600061405086614a49565b90506000864210614078576000878152600e60205260409020546001600160801b031661407a565b875b905061414561408761263f565b600860000160109054906101000a90046001600160801b03166001600160801b03168b857f0000000000000000000000000000000000000000000000000000000000000000600e60007f00000000000000000000000000000000000000000000000000000000000000008f6140fc9190615c63565b8152602081019190915260400160002054600160801b90046001600160801b0316878f7f000000000000000000000000000000000000000000000000000000000000000061503b565b91975095509350600061415961258a61263f565b905061416481614573565b6000806141738c86858e614f3a565b97509092509050614184828a615c63565b98506141908183615c76565b61419a9088615c63565b9650505050505093509350935093565b6009546001600160801b03166141e5610bb7826141cf85670de0b6b3a7640000615cb8565b600a546001600160801b031691908a600061476a565b600a80546001600160801b0319166001600160801b0392831617905561427390610bb7908316600e60006142397f000000000000000000000000000000000000000000000000000000000000000088615c63565b81526020810191909152604001600090812054600a546001600160801b03600160801b918290048116949391909204909116908b9061476a565b600a80546001600160801b03928316600160801b02921691909117905561429986612b6a565b6142a39082615ccf565b600980546001600160801b0319166001600160801b0392909216919091179055506142cd83612b6a565b600880546000906142e89084906001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061431b82846132979190615c63565b600b8054601090614337908490600160801b9004600f0b615d6d565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061436784612b6a565b60088054601090614389908490600160801b90046001600160801b0316615d20565b82546101009290920a6001600160801b038181021990931691831602179091556008547f00000000000000000000000000000000000000000000000000000000000000009116109050806143f65750600b54600854600160801b909104600f0b6001600160801b03909116125b15610f665760405163585fe6df60e11b815260040160405180910390fd5b6000614469826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150d09092919063ffffffff16565b905080516000148061448a57508080602001905181019061448a9190615dfe565b6115565760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610704565b6040516001600160a01b0380851660248301528316604482015260648101829052610a049085906323b872dd60e01b9060840161202d565b600061267c83670de0b6b3a764000084612f5f565b600061455787878761455088670de0b6b3a7640000615c63565b87876150e7565b979650505050505050565b6000612be182612bc7858888612f5f565b6013546001600160801b03600160801b820481169116426145b47f000000000000000000000000000000000000000000000000000000000000000084615c76565b11156145bf57505050565b6000601282815481106145d4576145d4615c89565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b0316906146088342615c63565b601254909150878202830190600090614622886001615c76565b61462c9190615d0c565b905060405180604001604052804263ffffffff168152602001836001600160e01b03168152506012828154811061466557614665615c89565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061471785612bd785817f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061470d818c614521565b612bd79190615c63565b9150614743827f0000000000000000000000000000000000000000000000000000000000000000612667565b9050935093915050565b60008061475a8385615d9a565b9050600081121561267c57600080fd5b600081156147aa576147a361477f8487615c76565b6147898587612667565b614793888a612667565b61479d9190615c76565b9061484f565b9050612be1565b8285036147b957506000612be1565b613b3e6147c68487615c63565b6147d08587612667565b6147da888a612667565b61479d9190615c63565b60006148107f000000000000000000000000000000000000000000000000000000000000000083612667565b600c54600854614847916000916001600160801b03918216600f0b91614837911687612667565b6148419190615d9a565b90614c33565b121592915050565b600061267c83670de0b6b3a764000084614cb2565b60008160000361487d5750670de0b6b3a7640000612508565b8260000361488d57506000612508565b8160006148998561515a565b90508181026148b0670de0b6b3a764000082615e1b565b9050613b3e8161536e565b600c5460009081906148d6906001600160801b031684614521565b90506149027f000000000000000000000000000000000000000000000000000000000000000082615c76565b6008546001600160801b0316111561495a576008547f00000000000000000000000000000000000000000000000000000000000000009061494d9083906001600160801b0316615c63565b6149579190615c63565b91505b50919050565b600080841161496f578261497a565b61497a838686612f5f565b90508060000361498a5750610a04565b8085838211156149a5578391506149a2878385612f5f565b90505b6149ae82612b6a565b600d80546000906149c99084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506149f681612b6a565b600d8054601090614a18908490600160801b90046001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506109ee8161367a90615dba565b600080614a5461223e565b9050808311614a64576000614a6e565b614a6e8184615c63565b9150614957827f0000000000000000000000000000000000000000000000000000000000000000614521565b60008080614abb614ab388670de0b6b3a7640000615c63565b899087612f5f565b9050614ac78888612667565b91508115614afd57614aee8a8a84614ae78a670de0b6b3a7640000615c63565b8989614e9e565b9250614afa8382615c76565b90505b9750975097945050505050565b6000808080614b2186670de0b6b3a7640000615c63565b9350614b568786611a418b612bd7897f0000000000000000000000000000000000000000000000000000000000000000612667565b9350614b82847f0000000000000000000000000000000000000000000000000000000000000000612667565b91506000614ba3614b9b89670de0b6b3a7640000615c63565b8a9088612f5f565b9050614bcf817f0000000000000000000000000000000000000000000000000000000000000000612667565b9350614bfb847f0000000000000000000000000000000000000000000000000000000000000000612667565b915050945094509450949050565b600060016001607f1b03198212801590614c2a575060016001607f1b038213155b612b7c57600080fd5b6000818313614c42578161267c565b5090919050565b600081831361495a578261267c565b600061267c8383670de0b6b3a7640000614cb2565b6000614c7b612e5e8361376f565b60008080526002602052600080516020615e998339815191525491925090614ca4908590615c76565b9050610f6685838387614960565b6000826000190484118302158202614cc957600080fd5b50910281810615159190040190565b600080670de0b6b3a7640000614cec61223e565b614cf69190615cb8565b9050808311614d06576000614d10565b614d108184615c63565b9150614957614d47670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000615cb8565b8390614521565b60008080614d5c8585614521565b90506000614d6d82868c8a8d6154f9565b90506000614da8614d86670de0b6b3a76400008a614521565b614d9e614d978b612bc78b8f612667565b8690612667565b612bc79085615c63565b9050614db4898c615c63565b614dbe8b83615c63565b945094505050505b965096945050505050565b600081831161495a578261267c565b600080614df1888888888888615527565b90925090508061362757604051637ac17d2560e01b815260040160405180910390fd5b60008080614e228585614521565b90506000614e3382868b8a8c6154f9565b90506000614e68614e4c670de0b6b3a76400008a614521565b612bc7614e61670de0b6b3a764000087615c76565b8590614521565b90506000614e768288614521565b9050614e828b82615c63565b614e8c838c615c63565b95509550505050509550959350505050565b600080614eab8484614521565b90506000614ebc82858b898c6154f9565b9050614ecc86612bc7898b615c63565b97506000614ef3614ee5670de0b6b3a76400008961484f565b612bc7856137698d87615c63565b9050614eff8186614521565b9050614f0b8a82615c63565b9a9950505050505050505050565b6000614557878787614f3388670de0b6b3a7640000615c63565b8787614de0565b6000808080614f5186670de0b6b3a7640000615c63565b9050614f868786611a418b612bd7867f0000000000000000000000000000000000000000000000000000000000000000612667565b9350614fb2847f0000000000000000000000000000000000000000000000000000000000000000612667565b91506000614fcb614b9b89670de0b6b3a7640000615c63565b9050614ff7817f0000000000000000000000000000000000000000000000000000000000000000612667565b9350615023847f0000000000000000000000000000000000000000000000000000000000000000612667565b61502d9084615c76565b925050509450945094915050565b6000808061505c6150548a670de0b6b3a7640000615c63565b8b9087612f5f565b9050881561509e5761506e8a8a612667565b915061508f8c8c846150888c670de0b6b3a7640000615c63565b8989614de0565b925061509b8382615c76565b90505b858711156150c1576150b1818789612f5f565b90506150be838789612f5f565b92505b99509950999650505050505050565b60606150df84846000856155c8565b949350505050565b6000806150f48484614521565b9050600061510582858b898c6154f9565b905061511f86612bc76151188a8d615c76565b8790612667565b985061512b828a612667565b9850600061514e615144670de0b6b3a76400008961484f565b612bc78c85615c63565b9050614f0b818a615c63565b60008082121561517d57604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e19821361538957506000919050565b680755bf798b4a1bf1e582126153b25760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006155058284614864565b61551d61551685612bc78989612667565b8890612667565b613b3e9190615c76565b600080806155358585614521565b9050600061554682868c8a8d6154f9565b905061555687612bc78a8c615c76565b98508881101561556e57600080935093505050614dc6565b6000615593615585670de0b6b3a76400008a61484f565b612bc7856137698e87615c63565b905061559f8187614521565b9050808b11156155b6576155b3818c615c63565b94505b60019350505050965096945050505050565b6060824710156156295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610704565b600080866001600160a01b031685876040516156459190615e49565b60006040518083038185875af1925050503d8060008114615682576040519150601f19603f3d011682016040523d82523d6000602084013e615687565b606091505b509150915061455787838387606083156157025782516000036156fb576001600160a01b0385163b6156fb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610704565b50816150df565b6150df83838151156157175781518083602001fd5b8060405162461bcd60e51b81526004016107049190615e65565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156157705780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156157a9578181015183820152602001615791565b50506000910152565b6000602082840312156157c457600080fd5b815167ffffffffffffffff808211156157dc57600080fd5b818401915084601f8301126157f057600080fd5b81518181111561580257615802615778565b604051601f8201601f19908116603f0116810190838211818310171561582a5761582a615778565b8160405282815287602084870101111561584357600080fd5b61455783602083016020880161578e565b6001600160a01b038116811461586957600080fd5b50565b60006020828403121561587e57600080fd5b813561267c81615854565b801515811461586957600080fd5b6000602082840312156158a957600080fd5b813561267c81615889565b600080600080608085870312156158ca57600080fd5b843593506020850135925060408501356158e381615854565b915060608501356158f381615889565b939692955090935050565b60008083601f84011261591057600080fd5b50813567ffffffffffffffff81111561592857600080fd5b6020830191508360208260051b850101111561223757600080fd5b6000806000806000806080878903121561595c57600080fd5b863561596781615854565b9550602087013561597781615854565b9450604087013567ffffffffffffffff8082111561599457600080fd5b6159a08a838b016158fe565b909650945060608901359150808211156159b957600080fd5b506159c689828a016158fe565b979a9699509497509295939492505050565b600080600080608085870312156159ee57600080fd5b843593506020850135615a0081615854565b92506040850135615a1081615854565b9396929550929360600135925050565b60008060008060808587031215615a3657600080fd5b843593506020850135615a4881615854565b92506040850135915060608501356158f381615854565b600080600080600060a08688031215615a7757600080fd5b8535945060208601359350604086013592506060860135615a9781615854565b91506080860135615aa781615889565b809150509295509295909350565b60008060408385031215615ac857600080fd5b8235615ad381615854565b91506020830135615ae381615889565b809150509250929050565b600080600080600080600060e0888a031215615b0957600080fd5b8735615b1481615854565b96506020880135615b2481615854565b95506040880135615b3481615889565b945060608801359350608088013560ff81168114615b5157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215615b8357600080fd5b833592506020840135615b9581615854565b929592945050506040919091013590565b600080600080600060a08688031215615bbe57600080fd5b853594506020860135615bd081615854565b93506040860135615be081615854565b9250606086013591506080860135615aa781615854565b600060208284031215615c0957600080fd5b5035919050565b600060208284031215615c2257600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561250857612508615c4d565b8082018082111561250857612508615c4d565b634e487b7160e01b600052603260045260246000fd5b600060018201615cb157615cb1615c4d565b5060010190565b808202811582820484141761250857612508615c4d565b6001600160801b03828116828216039080821115615cef57615cef615c4d565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615d1b57615d1b615cf6565b500690565b6001600160801b03818116838216019080821115615cef57615cef615c4d565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561250857612508615c4d565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561250857612508615c4d565b8181036000831280158383131683831282161715615cef57615cef615c4d565b6000600160ff1b8201615dcf57615dcf615c4d565b5060000390565b8082018281126000831280158216821582161715615df657615df6615c4d565b505092915050565b600060208284031215615e1057600080fd5b815161267c81615889565b600082615e2a57615e2a615cf6565b600160ff1b821460001984141615615e4457615e44615c4d565b500590565b60008251615e5b81846020870161578e565b9190910192915050565b6020815260008251806020840152615e8481604085016020870161578e565b601f01601f1916919091016040019291505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba26469706673582212207c318bd3db881019e9ab904f6ae42d2ef48425b79bbc85affdc2e39c77de2a8764736f6c63430008130033a2646970667358221220555fa7569a41e8c7f001ede5ffaf6a4c8f78fbf3c4ab28d4c6ebb89a76ca745e64736f6c63430008130033", + "sourceMap": "910:1538:9:-:0;;;1013:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1051:12:9;;;910:1538;;14:307:158;101:6;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:158;;231:42;;221:70;;287:1;284;277:12;221:70;310:5;14:307;-1:-1:-1;;;14:307:158:o;:::-;910:1538:9;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x60806040523480156200001157600080fd5b50600436106200002e5760003560e01c806376725f861462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003c3565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b61636c80620004dd83390190565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102208112156200026957600080fd5b6101a0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a0830152620002d360c089016200012c565b60c0830152620002e660e089016200012c565b60e0830152610100620002fc8a828b0162000149565b8184015250610160880135610120830152610180880135610140830152819650620003298189016200012c565b955050506101c08601359250620003446101e087016200012c565b915061020086013567ffffffffffffffff8111156200036257600080fd5b6200037088828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003b85781516001600160a01b03168752958201959082019060010162000391565b509495945050505050565b86516001600160a01b0316815260006102406020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c08901516200042260c08501826001600160a01b03169052565b5060e08901516200043e60e08501826001600160a01b03169052565b50610100898101518051858301526020810151610120860152604081015161014086015250506101208901516101608401526101408901516101808401526001600160a01b0388166101a0840152866101c0840152620004aa6101e08401876001600160a01b03169052565b6001600160a01b03851661020084015280610220840152620004cf818401856200037d565b999850505050505050505056fe61028060405260016000553480156200001757600080fd5b506040516200636c3803806200636c8339810160408190526200003a9162000772565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260808101516000036200017d57604051635428734d60e01b815260040160405180910390fd5b608081018051610120525160608201511080620001ae575080608001518160600151620001ab9190620008b3565b15155b15620001cd5760405163253fffcf60e11b815260040160405180910390fd5b60608101516101405260a08101516101605260208101516101805260c0810151601180546001600160a01b0319166001600160a01b0392831617905560e0820151166102205261010081015151670de0b6b3a76400001080620002405750670de0b6b3a764000081610100015160200151115b806200025c5750670de0b6b3a764000081610100015160400151115b156200027b576040516322f72cc360e11b815260040160405180910390fd5b61010081018051516101c0528051602001516101e05251604001516102005261014001516102405260005b84610120015181101562000333576040805180820190915263ffffffff4281168252600060208301818152601280546001810182559252925192516001600160e01b03166401000000000292909116919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490910155806200032a81620008d6565b915050620002a6565b5050506001600160a01b0388166102605250620003569450506200057992505050565b8660200151146200037a576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620008fe565b6001600160a01b031686600001516001600160a01b0316146200041557604051630722152560e11b815260040160405180910390fd5b85516102605160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200046c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000492919062000925565b620004b0576040516340b27c2160e11b815260040160405180910390fd5b60005b81518110156200056c576000828281518110620004d457620004d462000949565b60200260200101519050610260516001600160a01b0316816001600160a01b03161480620005165750610100516001600160a01b0316816001600160a01b0316145b15620005355760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19166001179055806200056381620008d6565b915050620004b3565b5050505050505062000979565b610260516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f291906200095f565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715620006335762000633620005f7565b60405290565b6001600160a01b03811681146200064f57600080fd5b50565b80516200065f8162000639565b919050565b6000606082840312156200067757600080fd5b604051606081016001600160401b03811182821017156200069c576200069c620005f7565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006d557600080fd5b815160206001600160401b0380831115620006f457620006f4620005f7565b8260051b604051601f19603f830116810181811084821117156200071c576200071c620005f7565b6040529384528581018301938381019250878511156200073b57600080fd5b83870191505b8482101562000767578151620007578162000639565b8352918301919083019062000741565b979650505050505050565b6000806000806000808688036102408112156200078e57600080fd5b6101a0808212156200079f57600080fd5b620007a96200060d565b9150620007b68962000652565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a0830152620007f860c08a0162000652565b60c08301526200080b60e08a0162000652565b60e0830152610100620008218b828c0162000664565b81840152506101608901516101208301526101808901516101408301528197506200084e818a0162000652565b965050506101c08701519350620008696101e0880162000652565b92506200087a610200880162000652565b6102208801519092506001600160401b038111156200089857600080fd5b620008a689828a01620006c3565b9150509295509295509295565b600082620008d157634e487b7160e01b600052601260045260246000fd5b500690565b600060018201620008f757634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200091157600080fd5b81516200091e8162000639565b9392505050565b6000602082840312156200093857600080fd5b815180151581146200091e57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200097257600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516157a662000bc660003960008181611f5e01528181611ffd0152818161207f015281816128be0152818161293f0152818161297f0152612a12015260006141b60152600081816105590152818161066901528181610c8a0152610cf001526000818161434201528181614551015281816145ca015281816148f4015261496501526000818161459e01526149390152600081816143020152818161452501526148c8015260008181610a5301528181610a9e01528181610bb20152818161252c0152818161310101528181613330015281816136300152818161367f0152613b970152600081816107de01528181610b21015281816117aa0152818161224a0152818161229101528181612cc201528181612d330152818161330a0152818161389f0152818161390f01528181613cf20152613d63015260008181610b64015281816117ec01528181612228015281816122b201528181612ca001528181612d54015281816133560152818161387d0152818161393001528181613c7e0152613d8401526000818161085f01528181610b43015281816110a1015281816117cb01528181611a9601528181612e8d0152818161383601528181613ca301528181613e0f01526146e6015260008181611c5b01528181611d0401526120c401526000611f1a015260008181610386015261131c01526000612bbe01526000612b810152600061015701526157a66000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063c23632a71161006f578063c23632a7146104a8578063c326a903146104c8578063c576201d146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a22cb46514610468578063ab033ea91461048857610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a2914610272578063116606451461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f929190615043565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe82615053565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016150c4565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b36600461517e565b61054e565b005b34801561027e57600080fd5b5061027061028d3660046151a9565b610692565b6102a56102a03660046151c6565b6106db565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615255565b610917565b3480156102eb57600080fd5b506102706102fa3660046152ea565b6109d5565b61031261030d3660046151c6565b6109e8565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b3660046151a9565b610c3d565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c33660046151c6565b610d21565b3480156103d457600080fd5b506102706103e3366004615332565b610ee7565b3480156103f457600080fd5b50610312610403366004615371565b610f35565b34801561041457600080fd5b506102706104233660046153c7565b6111ca565b34801561043457600080fd5b50610270610443366004615400565b611242565b34801561045457600080fd5b50610270610463366004615480565b611490565b34801561047457600080fd5b506102706104833660046153c7565b6114a1565b34801561049457600080fd5b506102706104a336600461517e565b61150d565b3480156104b457600080fd5b506102a56104c33660046151c6565b611581565b6103126104d6366004615371565b611710565b6102a56104e93660046151c6565b6119f7565b3480156104fa57600080fd5b506102706105093660046154b8565b611bda565b34801561051a57600080fd5b50610270610529366004615509565b611c2a565b34801561053a57600080fd5b50610312610549366004615371565b611d30565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615522565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083611e80565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c80549115156101000261ff0019909216919091179055565b6000806000546001146107095760405162461bcd60e51b81526004016107009061553b565b60405180910390fd5b6002600055600c54610100900460ff1615610737576040516313d0ff5960e31b815260040160405180910390fd5b61073f611ee3565b8560000361076057604051631f2a200560e01b815260040160405180910390fd5b60008061076d8886611f04565b91509150600061077b6120bd565b905061078781836120f8565b5060008060006107978686612201565b600854919a509295509093509091506107c1908390600160801b90046001600160801b0316615575565b600854610803906107dc9086906001600160801b0316615588565b7f000000000000000000000000000000000000000000000000000000000000000090612344565b106108215760405163512095c760e01b815260040160405180910390fd5b868b11156108425760405163c972651760e01b815260040160405180910390fd5b80601060008282546108549190615588565b9091555061088490507f000000000000000000000000000000000000000000000000000000000000000085615588565b975061089483888488888d612360565b60006108a160018a612595565b90506108ae818c8a6125ca565b604080518a8152602081018f90529081018990528d9082906001600160a01b038e16907f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b39060600160405180910390a350505050505050505b6001600055909590945092505050565b6001600160a01b038616158061093457506001600160a01b038516155b156109525760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109725760405163174861a760e31b815260040160405180910390fd5b60005b838110156109cc576109ba8585838181106109925761099261559b565b9050602002013588888686868181106109ad576109ad61559b565b9050602002013533612673565b806109c4816155b1565b915050610975565b50505050505050565b6109e28484848433612673565b50505050565b60008054600114610a0b5760405162461bcd60e51b81526004016107009061553b565b6002600055610a18611ee3565b600c5460ff1615610a3c57604051637983c05160e01b815260040160405180910390fd5b600080610a498785611f04565b9092509050610a797f000000000000000000000000000000000000000000000000000000000000000060026155ca565b821015610a9957604051632afb507160e21b815260040160405180910390fd5b610ac47f000000000000000000000000000000000000000000000000000000000000000060026155ca565b610ace9083615575565b9250610ae1610adb6120bd565b826120f8565b50600c805460ff19166001179055610af8826127f9565b600880546001600160801b0319166001600160801b0392909216919091179055610b8d610b88837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061280f565b6127f9565b600880546001600160801b03928316600160801b029216919091179055610bd66000807f00000000000000000000000000000000000000000000000000000000000000006125ca565b610be2600086856125ca565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c605760405162461bcd60e51b81526004016107009061553b565b60026000908155338152600f602052604090205460ff16158015610cad5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610cc457506011546001600160a01b03163314155b15610ce1576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d15817f00000000000000000000000000000000000000000000000000000000000000008561288a565b60016000559392505050565b600080600054600114610d465760405162461bcd60e51b81526004016107009061553b565b60026000908155610d556129f2565b9050610d62610adb6120bd565b50600d548792506001600160801b031680831115610d8757806001600160801b031692505b82600003610d9d57600080935093505050610907565b610dac600360f81b3385612a85565b600d546001600160801b03600160801b909104811690600090610dd490869084908616612b25565b9050610ddf856127f9565b610de990846155e1565b600d80546001600160801b0319166001600160801b0392909216919091179055610e12816127f9565b600d8054601090610e34908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610e6381898961288a565b955085610e708a87612344565b1115610e8f5760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050506001600055909590945092505050565b83610ef181612b43565b6001600160a01b0316336001600160a01b031614610f2257604051632aab8bd360e01b815260040160405180910390fd5b610f2e85858585612c00565b5050505050565b60008054600114610f585760405162461bcd60e51b81526004016107009061553b565b60026000908155859003610f7f57604051631f2a200560e01b815260040160405180910390fd5b6000610f896129f2565b9050610f9587826120f8565b50610fab610fa4600289612595565b3388612a85565b600080600080610fbc8a868d612c6d565b60085493975091955093509150600090610fe4906107dc9087906001600160801b0316615588565b600854909150600090611008908690600160801b90046001600160801b0316615575565b6008549091506001600160801b03161515806110355750600854600160801b90046001600160801b031615155b80156110415750808210155b1561105f5760405163512095c760e01b815260040160405180910390fd5b505080601060008282546110739190615588565b9091555050428b1115611097576110978a8461108f8486615575565b878f8a612def565b6000600e816110c67f00000000000000000000000000000000000000000000000000000000000000008f615575565b815260208101919091526040016000908120546001600160801b03169150428d11156110f2578661110b565b60008d8152600e60205260409020546001600160801b03165b9050600061111c8d8685858c6130a0565b9050600061112b828d8d61288a565b90508c81101561114e5760405163c972651760e01b815260040160405180910390fd5b8e8e61115b600283612595565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f8486856040516111a9939291909283526020830191909152604082015260600190565b60405180910390a3505060016000559e9d5050505050505050505050505050565b6011546001600160a01b031633146111f4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b834211156112635760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b03871661128a5760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156113b6573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b0316146113f457604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0389166000908152600760205260408120805491611418836155b1565b90915550506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b61149c83838333612c00565b505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b03163314611537576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146115a65760405162461bcd60e51b81526004016107009061553b565b600260009081558690036115cd57604051631f2a200560e01b815260040160405180910390fd5b60006115d76129f2565b90506115e4610adb6120bd565b5060026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54600d54600360f81b6000908152600080516020615751833981519152549091611640916001600160801b0390911690615575565b9050600061164e8284615588565b905061165c6000338c612a85565b600061166b8b868487876130da565b9650905061167e600360f81b8a886125ca565b611689818a8a61288a565b9650868a11156116ac5760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146117335760405162461bcd60e51b81526004016107009061553b565b6002600055600c54610100900460ff1615611761576040516313d0ff5960e31b815260040160405180910390fd5b611769611ee3565b8560000361178a57604051631f2a200560e01b815260040160405180910390fd5b600854600090611810906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613233565b90508581108061181f57508481115b1561183d57604051633b61151160e11b815260040160405180910390fd5b60008061184a8986611f04565b91509150611859610adb6120bd565b50600d54600360f81b60009081526002602052600080516020615751833981519152549091611893916001600160801b0390911690615575565b600080805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54919250906118ce908390615588565b90506000806118dc8561327b565b905060006118e9826133e8565b90506118f487613617565b6008546001600160801b038082168452600160801b90910416602083015261191b826133e8565b9250611933848261192c8187615575565b9190612b25565b9850505060006119518289856119499190615588565b8a9190612b25565b905060008411801561196257508086115b15611991576000611978858561192c858b615575565b905061198f81846119898c88615588565b88613720565b505b61199d60008b8a6125ca565b60408051898152602081018f90526001600160a01b038c16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a25050600160005550939998505050505050505050565b600080600054600114611a1c5760405162461bcd60e51b81526004016107009061553b565b6002600055600c54610100900460ff1615611a4a576040516313d0ff5960e31b815260040160405180910390fd5b611a52611ee3565b85600003611a7357604051631f2a200560e01b815260040160405180910390fd5b6000611a7d6129f2565b90506000611a92611a8c6120bd565b836120f8565b90507f0000000000000000000000000000000000000000000000000000000000000000611abd6120bd565b611ac79190615588565b93506000611ad485613809565b9050600080611ae48b868561385a565b80925081935050508060106000828254611afe9190615588565b9250508190555050611b1d84611b178c8487898a6130a0565b90612344565b945084891015611b405760405163c972651760e01b815260040160405180910390fd5b611b4a8588611f04565b5050611b5a8a828686868b613994565b6000611b67600288612595565b9050611b74818a8d6125ca565b60408051888152602081018890529081018c90528b9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a35050505050506001600055909590945092505050565b84611be481612b43565b6001600160a01b0316336001600160a01b031614611c1557604051632aab8bd360e01b815260040160405180910390fd5b611c228686868686612673565b505050505050565b6000818152600e60205260409020546001600160801b031615611c4a5750565b6000611c546120bd565b9050611c807f00000000000000000000000000000000000000000000000000000000000000008361561e565b151580611c8c57508181105b15611caa5760405163ecd29e8160e01b815260040160405180910390fd5b808203611cc25761149c81611cbd6129f2565b6120f8565b815b6000818152600e60205260409020546001600160801b0316828203611cee57611ceb6129f2565b90505b8015611cfe57610f2e84826120f8565b50611d297f000000000000000000000000000000000000000000000000000000000000000082615588565b9050611cc4565b60008054600114611d535760405162461bcd60e51b81526004016107009061553b565b60026000908155859003611d7a57604051631f2a200560e01b815260040160405180910390fd5b6000611d846129f2565b9050611d9087826120f8565b50611d9f610fa4600189612595565b600080600080611db08a868d613bf6565b93509350935093508060106000828254611dca9190615588565b9091555050428b1115611de557611de58a8484878f8a613df9565b6000611df2838a8a61288a565b9050808a1115611e155760405163c972651760e01b815260040160405180910390fd5b611e2060018d612595565b604080518e8152602081018490529081018d90526001600160a01b038b16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a360016000559b9a5050505050505050505050565b6040516001600160a01b03831660248201526044810182905261149c90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261403b565b3415611f0257604051631574f9f360e01b815260040160405180910390fd5b565b6000808215611fe457611f426001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087614110565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af1158015611faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd39190615522565b9150611fdd6129f2565b90506120b6565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190615522565b90506120a76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084614110565b8092506120b26129f2565b9150505b9250929050565b60006120e97f00000000000000000000000000000000000000000000000000000000000000004261561e565b6120f39042615575565b905090565b6000828152600e6020526040812080546001600160801b031615158061211d57504284115b156121415750506000828152600e60205260409020546001600160801b03166121fb565b61214a836127f9565b81546001600160801b0319166001600160801b03919091161781556000600281612175600188612595565b815260200190815260200160002054905060008111156121a8576121a881600061219f8288614148565b60008989613df9565b6000600260006121b9600289612595565b815260200190815260200160002054905060008111156121ec576121ec8160006121e38289614148565b60008a8a612def565b5050546001600160801b031690505b92915050565b60085460009081908190819061226e906001600160801b0380821691600160801b900416887f0000000000000000000000000000000000000000000000000000000000000000897f000000000000000000000000000000000000000000000000000000000000000061415d565b6008549093506000906122d6906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b90506122e18161419a565b6000806122ef89848a6142f4565b90925090506122fe8287615575565b945061230a8184614148565b6123149086615588565b95506123208189614148565b61232a908a615575565b96506123368189614148565b935050505092959194509250565b60006123598383670de0b6b3a7640000612b25565b9392505050565b6009546001600160801b031661239b610b888261238585670de0b6b3a76400006155ca565b600a546001600160801b031691908a6001614375565b600a80546001600160801b0319166001600160801b03929092169190911790556000838152600e602052604081209061240d90610b88906002906123e0600188612595565b81526020810191909152604001600020548354600160801b90046001600160801b031690888b6001614375565b81546001600160801b03908116600160801b9282168302178355600a5461244292610b889291048116908516888b6001614375565b600a80546001600160801b03928316600160801b029216919091179055612468886127f9565b600880546000906124839084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506124b0866127f9565b600880546010906124d2908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506124ff876127f9565b6125099083615632565b600980546001600160801b0319166001600160801b0383169081179091559092507f0000000000000000000000000000000000000000000000000000000000000000906125569087614148565b6125609190615588565b6008546001600160801b0316101561258b576040516318846de960e01b815260040160405180910390fd5b5050505050505050565b60006001600160f81b038211156125bf5760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b0386168452909152812080548392906125fc908490615588565b90915550506000838152600260205260408120805483929061261f908490615588565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b836001600160a01b0316816001600160a01b031614612737576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff166127375760008581526004602090815260408083206001600160a01b038089168552908352818420908516845290915290205460001981146127355760008681526004602090815260408083206001600160a01b03808a16855290835281842090861684529091528120805485929061272f908490615575565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612769908490615575565b909155505060008581526001602090815260408083206001600160a01b0387168452909152812080548492906127a0908490615588565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b821061280b57600080fd5b5090565b600080612820846301e13380614148565b90506000612836670de0b6b3a764000085612344565b905061287c612872612850670de0b6b3a7640000846143f1565b61286c61285d8a87612344565b670de0b6b3a764000090614406565b90614436565b611b17898b612344565b925050505b95945050505050565b6000811561293257604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292b9190615522565b9050612359565b6129666001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486611e80565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa1580156129ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128819190615522565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612a61573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190615522565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612ab7908490615575565b909155505060008381526002602052604081208054839290612ada908490615575565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629101612666565b6000826000190484118302158202612b3c57600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b6000806000806000612c7e86613809565b600854909150612ce6906001600160801b0380821691600160801b9004168a847f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061448d565b6008549297509095509350600090600160801b90046001600160801b0316612d1657670de0b6b3a7640000612d78565b600854612d78906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b9050612d838161419a565b600080600080612d958d87878f6144fd565b93509350935093508184612da99190615575565b612db3908b615588565b9950612dbf8385615588565b612dc99089615588565b9750898989612dd88486615588565b995099509950995050505050505093509350935093565b600954600160801b90046001600160801b0316612e31610b8882612e1b86670de0b6b3a76400006155ca565b600b546001600160801b031691908b6000614375565b600b80546001600160801b0319166001600160801b03929092169190911790556000600281612e608287612595565b815260200190815260200160002054905083421015612e8657612e838882615588565b90505b6000612eb27f000000000000000000000000000000000000000000000000000000000000000086615575565b6000818152600e6020526040812060018101549293506001600160801b039092169190612ef5610b88612ee58e88614148565b6001600160801b03861690612344565b600b80549192508291601090612f1c908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508083612f4c91906155e1565b8260010160006101000a8154816001600160801b0302191690836001600160801b031602179055505050505050612f82876127f9565b612f8c90826155e1565b600980546001600160801b03928316600160801b029216919091179055612fb2846127f9565b60088054600090612fcd9084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550612ffa866127f9565b6008805460109061301c908490600160801b90046001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613054848661304f9190615575565b613617565b600d54600360f81b6000908152600260205260008051602061575183398151915254909161308d916001600160801b0390911690615575565b9050801561258b5761258b8682856145fc565b6000806130b9846130b18786614658565b899190612b25565b9050858111156130d0576130cd8682615575565b91505b5095945050505050565b60008060006130e88761327b565b905060006130f5826133e8565b60085490915061312f907f0000000000000000000000000000000000000000000000000000000000000000906001600160801b0316615575565b6009549094506001600160801b03161561317457600a54600954613167916001600160801b0391821691600160801b90910416614148565b6131719085615575565b93505b61317f848a88612b25565b935061318d61304f85615652565b6008546001600160801b038082168452600160801b90910416602083015260006131b6836133e8565b905060006131c5898385612b25565b90506131d18b8a61566e565b6131db908261566e565b905060008112156132245760006131fc6131f483615652565b85908c612b25565b90506132088188615575565b965061321381613617565b61321e81898d6145fc565b60009150505b93505050509550959350505050565b600080613244846301e13380614148565b9050600061325488888887614189565b905061287c6132638284612344565b613275670de0b6b3a76400008461466d565b90614148565b6132d860405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600160801b909104811660208301529181018490527f000000000000000000000000000000000000000000000000000000000000000060608201527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a0820152600954821660c0820152600a54909160e0830191613398911661469b565b81526009546001600160801b03600160801b90910481166020830152600b546040909201916133c7911661469b565b8152600b54600160801b90046001600160801b031660209091015292915050565b60008061340883610120015184610100015161234490919063ffffffff16565b60e084015160c085015161341b91612344565b613425919061566e565b905060008113156134835761346c836000015184602001518361345d8760a00151670de0b6b3a764000061466d90919063ffffffff16565b87604001518860600151614711565b8351849061347b908390615575565b905250613588565b60008112156135885760006134c2846000015185602001518660a00151670de0b6b3a76400006134b39190615575565b87604001518860600151614796565b91505080826134d090615652565b11156134dc57806134e5565b6134e582615652565b9050801561353c57613529846000015185602001518361351a8860a00151670de0b6b3a764000061466d90919063ffffffff16565b88604001518960600151614820565b84518590613538908390615588565b9052505b6135748161354984615652565b6135539190615575565b604086015161010087015161356791612344565b6101408701519190612b25565b84518590613583908390615588565b905250505b60006135b68460e00151670de0b6b3a76400006135a59190615575565b604086015160c08701519190612b25565b6135e4856101200151670de0b6b3a76400006135d29190615575565b60408701516101008801519190612b25565b6135ee919061566e565b84519091506135fe90829061568e565b808552608085015161360f91615575565b949350505050565b806000036136225750565b6008546001600160801b03167f000000000000000000000000000000000000000000000000000000000000000081101561366f5760405163585fe6df60e11b815260040160405180910390fd5b600061367b838361568e565b90507f00000000000000000000000000000000000000000000000000000000000000008110156136be5760405163585fe6df60e11b815260040160405180910390fd5b6136c7816127f9565b600880546001600160801b0319166001600160801b0392831617908190556136fe91610b88918491600160801b9091041685612b25565b600880546001600160801b03928316600160801b029216919091179055505050565b600080841161372f578261373a565b61373a838686612b25565b90508060000361374a57506109e2565b80858382111561376557839150613762878385612b25565b90505b61376e826127f9565b600d80546000906137899084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506137b6816127f9565b600d80546010906137d8908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506109cc8161304f90615652565b6000806138146120bd565b905080831161382457600061382e565b61382e8184615575565b9150612359827f0000000000000000000000000000000000000000000000000000000000000000614148565b60085460009081906138c3906001600160801b0380821691600160801b900416877f0000000000000000000000000000000000000000000000000000000000000000887f000000000000000000000000000000000000000000000000000000000000000061487f565b9150846138d08386612344565b11156138ef5760405163512095c760e01b815260040160405180910390fd5b600854600090613954906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b905061395f8161419a565b600061396d878684896148a0565b945090915061397e90508382615575565b6139889085615575565b93505050935093915050565b6009546139d790610b8890600160801b90046001600160801b03166139c184670de0b6b3a76400006155ca565b600b546001600160801b031691908a6001614375565b600b80546001600160801b0319166001600160801b03929092169190911790556000613a10610b88613a098887612344565b89866149a1565b600b80549192508291601090613a37908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555080600e6000613a686120bd565b8152602081019190915260400160009081206001018054909190613a969084906001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000613ac5876127f9565b600854613adb91906001600160801b03166155e1565b600880546001600160801b0319166001600160801b0383161790559050613b01886127f9565b60088054601090613b23908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613b50886127f9565b60098054601090613b72908490600160801b90046001600160801b0316615632565b82546101009290920a6001600160801b038181021990931691831602179091556009547f00000000000000000000000000000000000000000000000000000000000000009250613bc3911688614148565b613bcd9190615588565b816001600160801b0316101561258b576040516318846de960e01b815260040160405180910390fd5b6000806000806000613c0786613809565b90506000864210613c2f576000878152600e60205260409020546001600160801b0316613c31565b875b9050613d16600860000160009054906101000a90046001600160801b03166001600160801b0316600860000160109054906101000a90046001600160801b03166001600160801b03168b857f0000000000000000000000000000000000000000000000000000000000000000600e60007f00000000000000000000000000000000000000000000000000000000000000008f613ccd9190615575565b8152602081019190915260400160002054600160801b90046001600160801b0316878f7f00000000000000000000000000000000000000000000000000000000000000006149d7565b6008549298509096509450600090600160801b90046001600160801b0316613d4657670de0b6b3a7640000613da8565b600854613da8906001600160801b0380821691600160801b9004167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614189565b9050613db38161419a565b600080613dc28c86858e6148a0565b97509092509050613dd3828a615575565b9850613ddf8183615588565b613de99088615575565b9650505050505093509350935093565b6009546001600160801b03166000600e81613e347f000000000000000000000000000000000000000000000000000000000000000087615575565b81526020810191909152604001600020546001600160801b03600160801b90910481169150613e8b90610b88908416613e7587670de0b6b3a76400006155ca565b600a546001600160801b031691908c6000614375565b600a80546001600160801b0319166001600160801b039283161790819055613ec991610b8891600160801b90048116908581169085168c6000614375565b600a80546001600160801b03928316600160801b029216919091179055613eef886127f9565b613ef990836155e1565b600980546001600160801b0319166001600160801b0392909216919091179055613f22856127f9565b60088054600090613f3d9084906001600160801b03166155e1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613f6a876127f9565b60088054601090613f8c908490600160801b90046001600160801b0316615632565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613fc88587613fbf9190615575565b61304f90615652565b600d54600360f81b60009081526002602052600080516020615751833981519152549091614001916001600160801b0390911690615575565b905080156140305760006140218a89856001600160801b031688896130a0565b905061402e8183876145fc565b505b505050505050505050565b6000614090826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a6c9092919063ffffffff16565b90508051600014806140b15750808060200190518101906140b191906156b6565b61149c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610700565b6040516001600160a01b03808516602483015283166044820152606481018290526109e29085906323b872dd60e01b90608401611eac565b600061235983670de0b6b3a764000084612b25565b600061417e878787614177670de0b6b3a76400008961466d565b8787614a7b565b979650505050505050565b60006128818261286c858888612b25565b6013546001600160801b03600160801b820481169116426141db7f000000000000000000000000000000000000000000000000000000000000000084615588565b11156141e657505050565b6000601282815481106141fb576141fb61559b565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b03169061422f8342615575565b601254909150878202830190600090614249886001615588565b614253919061561e565b905060405180604001604052804263ffffffff168152602001836001600160e01b03168152506012828154811061428c5761428c61559b565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061433b85611b1785817f000000000000000000000000000000000000000000000000000000000000000081670de0b6b3a7640000614335818d614148565b9061466d565b915061436b7f0000000000000000000000000000000000000000000000000000000000000000611b178487612344565b9050935093915050565b600081156143b4576143ad61438a8685614406565b6143a76143978688612344565b6143a1898b612344565b90614406565b906143f1565b9050612881565b8285036143c357506000612881565b6143e76143d0868561466d565b6143a76143dd8688612344565b614335898b612344565b9695505050505050565b600061235983670de0b6b3a764000084614aee565b6000806144138385615588565b90508381101561235957604051632d59cfbd60e01b815260040160405180910390fd5b60008160000361444f5750670de0b6b3a76400006121fb565b8260000361445f575060006121fb565b81600061446b85614b14565b9050818102614482670de0b6b3a7640000826156d3565b90506143e781614d28565b600080806144ae6144a6670de0b6b3a76400008961466d565b899087612b25565b90506144ba8888612344565b915081156144f0576144e18a8a846144da670de0b6b3a76400008b61466d565b8989614820565b92506144ed8382615588565b90505b9750975097945050505050565b6000808080614514670de0b6b3a76400008761466d565b9350614549878661192c8b611b17897f0000000000000000000000000000000000000000000000000000000000000000612344565b9350614575847f0000000000000000000000000000000000000000000000000000000000000000612344565b9150600061459661458e670de0b6b3a76400008a61466d565b8a9088612b25565b90506145c2817f0000000000000000000000000000000000000000000000000000000000000000612344565b93506145ee847f0000000000000000000000000000000000000000000000000000000000000000612344565b915050945094509450949050565b600061460f61460a8361327b565b6133e8565b600080805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b549192509061464a908590615588565b9050610f2e85838387613720565b60006123598383670de0b6b3a7640000614aee565b60008282111561468f5760405162d6e85160e61b815260040160405180910390fd5b600061360f8385615575565b600080670de0b6b3a76400006146af6120bd565b6146b991906155ca565b90508083116146c95760006146d3565b6146d38184615575565b915061235961470a670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006155ca565b8390614148565b60008061471e8484614148565b9050600061472f82858b898c614eb3565b905061473f8661286c8a8a614406565b97506000614766614758670de0b6b3a7640000896143f1565b61286c85613275868e61466d565b90506147728186614148565b9050808a111561478957614786818b615575565b93505b5050509695505050505050565b600080806147a48585614148565b905060006147b582868b8a8c614eb3565b905060006147ea6147ce670de0b6b3a76400008a614148565b61286c6147e3670de0b6b3a764000087615588565b8590614148565b905060006147f88288614148565b90506148048b82615575565b61480e838c615575565b95509550505050509550959350505050565b60008061482d8484614148565b9050600061483e82858b898c614eb3565b905061484e8661286c8a8a61466d565b97506000614867614758670de0b6b3a7640000896143f1565b90506148738186614148565b9050614786818b61466d565b600061417e878787614899670de0b6b3a76400008961466d565b8787614711565b60008080806148b7670de0b6b3a76400008761466d565b90506148ec878661192c8b611b17867f0000000000000000000000000000000000000000000000000000000000000000612344565b9350614918847f0000000000000000000000000000000000000000000000000000000000000000612344565b9150600061493161458e670de0b6b3a76400008a61466d565b905061495d817f0000000000000000000000000000000000000000000000000000000000000000612344565b9350614989847f0000000000000000000000000000000000000000000000000000000000000000612344565b6149939084615588565b925050509450945094915050565b6000816000036149b357506000612359565b61360f826132756149d086611b17670de0b6b3a76400008561466d565b879061466d565b600080806149f86149f0670de0b6b3a76400008b61466d565b8b9087612b25565b90508815614a3a57614a0a8a8a612344565b9150614a2b8c8c84614a24670de0b6b3a76400008d61466d565b8989614711565b9250614a378382615588565b90505b85871115614a5d57614a4d818789612b25565b9050614a5a838789612b25565b92505b99509950999650505050505050565b606061360f8484600085614eda565b600080614a888484614148565b90506000614a9982858b898c614eb3565b9050614ab38661286c614aac8c8b614406565b8790612344565b9850614abf828a612344565b98506000614ae2614ad8670de0b6b3a7640000896143f1565b61286c848d61466d565b9050614786898261466d565b6000826000190484118302158202614b0557600080fd5b50910281810615159190040190565b600080821215614b3757604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e198213614d4357506000919050565b680755bf798b4a1bf1e58212614d6c5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006143e7614ec28385614436565b6143a1614ed38661286c8a8a612344565b8990612344565b606082471015614f3b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610700565b600080866001600160a01b03168587604051614f579190615701565b60006040518083038185875af1925050503d8060008114614f94576040519150601f19603f3d011682016040523d82523d6000602084013e614f99565b606091505b509150915061417e878383876060831561501457825160000361500d576001600160a01b0385163b61500d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610700565b508161360f565b61360f83838151156150295781518083602001fd5b8060405162461bcd60e51b8152600401610700919061571d565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156150825780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156150bb5781810151838201526020016150a3565b50506000910152565b6000602082840312156150d657600080fd5b815167ffffffffffffffff808211156150ee57600080fd5b818401915084601f83011261510257600080fd5b8151818111156151145761511461508a565b604051601f8201601f19908116603f0116810190838211818310171561513c5761513c61508a565b8160405282815287602084870101111561515557600080fd5b61417e8360208301602088016150a0565b6001600160a01b038116811461517b57600080fd5b50565b60006020828403121561519057600080fd5b813561235981615166565b801515811461517b57600080fd5b6000602082840312156151bb57600080fd5b81356123598161519b565b600080600080608085870312156151dc57600080fd5b843593506020850135925060408501356151f581615166565b915060608501356152058161519b565b939692955090935050565b60008083601f84011261522257600080fd5b50813567ffffffffffffffff81111561523a57600080fd5b6020830191508360208260051b85010111156120b657600080fd5b6000806000806000806080878903121561526e57600080fd5b863561527981615166565b9550602087013561528981615166565b9450604087013567ffffffffffffffff808211156152a657600080fd5b6152b28a838b01615210565b909650945060608901359150808211156152cb57600080fd5b506152d889828a01615210565b979a9699509497509295939492505050565b6000806000806080858703121561530057600080fd5b84359350602085013561531281615166565b9250604085013561532281615166565b9396929550929360600135925050565b6000806000806080858703121561534857600080fd5b84359350602085013561535a81615166565b925060408501359150606085013561520581615166565b600080600080600060a0868803121561538957600080fd5b85359450602086013593506040860135925060608601356153a981615166565b915060808601356153b98161519b565b809150509295509295909350565b600080604083850312156153da57600080fd5b82356153e581615166565b915060208301356153f58161519b565b809150509250929050565b600080600080600080600060e0888a03121561541b57600080fd5b873561542681615166565b9650602088013561543681615166565b955060408801356154468161519b565b945060608801359350608088013560ff8116811461546357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561549557600080fd5b8335925060208401356154a781615166565b929592945050506040919091013590565b600080600080600060a086880312156154d057600080fd5b8535945060208601356154e281615166565b935060408601356154f281615166565b92506060860135915060808601356153b981615166565b60006020828403121561551b57600080fd5b5035919050565b60006020828403121561553457600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156121fb576121fb61555f565b808201808211156121fb576121fb61555f565b634e487b7160e01b600052603260045260246000fd5b6000600182016155c3576155c361555f565b5060010190565b80820281158282048414176121fb576121fb61555f565b6001600160801b038281168282160390808211156156015761560161555f565b5092915050565b634e487b7160e01b600052601260045260246000fd5b60008261562d5761562d615608565b500690565b6001600160801b038181168382160190808211156156015761560161555f565b6000600160ff1b82016156675761566761555f565b5060000390565b81810360008312801583831316838312821617156156015761560161555f565b80820182811260008312801582168215821617156156ae576156ae61555f565b505092915050565b6000602082840312156156c857600080fd5b81516123598161519b565b6000826156e2576156e2615608565b600160ff1b8214600019841416156156fc576156fc61555f565b500590565b600082516157138184602087016150a0565b9190910192915050565b602081526000825180602084015261573c8160408501602087016150a0565b601f01601f1916919091016040019291505056fe3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1fa26469706673582212201d9f202ecea9e143076eea736b609892ffff5a5db82549ff2a0a42b525a0bb4e64736f6c63430008130033a264697066735822122085b46d1738a859ba5b692832319e284b18c9c242801edc9915c4941a033599be64736f6c63430008130033", - "sourceMap": "910:1538:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:795;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3900:32:156;;;3882:51;;3870:2;3855:18;1651:795:9;;;;;;;;1880:7;1959:29;2053:10;2037:26;;2222:7;2251:13;2286:15;2323:14;2359:4;2385:12;2179:236;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2133:306:9;1651:795;-1:-1:-1;;;;;;;1651:795:9:o;-1:-1:-1:-;;;;;;;;:::o;14:127:156:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;213:2;207:9;255:6;243:19;;292:18;277:34;;313:22;;;274:62;271:88;;;339:18;;:::i;:::-;375:2;368:22;146:250;:::o;401:181::-;477:20;;-1:-1:-1;;;;;526:31:156;;516:42;;506:70;;572:1;569;562:12;506:70;401:181;;;:::o;587:535::-;638:5;686:4;674:9;669:3;665:19;661:30;658:50;;;704:1;701;694:12;658:50;737:2;731:9;779:4;771:6;767:17;850:6;838:10;835:22;814:18;802:10;799:34;796:62;793:88;;;861:18;;:::i;:::-;901:10;897:2;890:22;;930:6;921:15;;973:9;960:23;952:6;945:39;1045:2;1034:9;1030:18;1017:32;1012:2;1004:6;1000:15;993:57;1111:2;1100:9;1096:18;1083:32;1078:2;1070:6;1066:15;1059:57;;587:535;;;;:::o;1127:902::-;1181:5;1234:3;1227:4;1219:6;1215:17;1211:27;1201:55;;1252:1;1249;1242:12;1201:55;1288:6;1275:20;1314:4;1337:18;1374:2;1370;1367:10;1364:36;;;1380:18;;:::i;:::-;1426:2;1423:1;1419:10;1458:2;1452:9;1521:2;1517:7;1512:2;1508;1504:11;1500:25;1492:6;1488:38;1576:6;1564:10;1561:22;1556:2;1544:10;1541:18;1538:46;1535:72;;;1587:18;;:::i;:::-;1623:2;1616:22;1673:18;;;1749:15;;;1745:24;;;1707:15;;;;-1:-1:-1;1781:15:156;;;1778:35;;;1809:1;1806;1799:12;1778:35;1845:2;1837:6;1833:15;1822:26;;1857:142;1873:6;1868:3;1865:15;1857:142;;;1939:17;;1927:30;;1977:12;;;;1890;;;;1857:142;;;2017:6;1127:902;-1:-1:-1;;;;;;;1127:902:156:o;2034:1588::-;2182:6;2190;2198;2206;2214;2258:9;2249:7;2245:23;2288:3;2284:2;2280:12;2277:32;;;2305:1;2302;2295:12;2277:32;2328:6;2354:2;2350;2346:11;2343:31;;;2370:1;2367;2360:12;2343:31;2396:17;;:::i;:::-;2383:30;;2436:37;2463:9;2436:37;:::i;:::-;2429:5;2422:52;2534:2;2523:9;2519:18;2506:32;2501:2;2494:5;2490:14;2483:56;2599:2;2588:9;2584:18;2571:32;2566:2;2559:5;2555:14;2548:56;2664:2;2653:9;2649:18;2636:32;2631:2;2624:5;2620:14;2613:56;2730:3;2719:9;2715:19;2702:33;2696:3;2689:5;2685:15;2678:58;2797:3;2786:9;2782:19;2769:33;2763:3;2756:5;2752:15;2745:58;2836:47;2878:3;2867:9;2863:19;2836:47;:::i;:::-;2830:3;2823:5;2819:15;2812:72;2917:47;2959:3;2948:9;2944:19;2917:47;:::i;:::-;2911:3;2904:5;2900:15;2893:72;2984:3;3019:51;3062:7;3057:2;3046:9;3042:18;3019:51;:::i;:::-;3014:2;3007:5;3003:14;2996:75;;3135:6;3124:9;3120:22;3107:36;3098:6;3091:5;3087:18;3080:64;3208:3;3197:9;3193:19;3180:33;3171:6;3164:5;3160:18;3153:61;3233:5;3223:15;;3257:46;3299:2;3288:9;3284:18;3257:46;:::i;:::-;3247:56;;;;3350:3;3339:9;3335:19;3322:33;3312:43;;3374:47;3416:3;3405:9;3401:19;3374:47;:::i;:::-;3364:57;;3472:3;3461:9;3457:19;3444:33;3500:18;3492:6;3489:30;3486:50;;;3532:1;3529;3522:12;3486:50;3555:61;3608:7;3599:6;3588:9;3584:22;3555:61;:::i;:::-;3545:71;;;2034:1588;;;;;;;;:::o;4150:461::-;4203:3;4241:5;4235:12;4268:6;4263:3;4256:19;4294:4;4323:2;4318:3;4314:12;4307:19;;4360:2;4353:5;4349:14;4381:1;4391:195;4405:6;4402:1;4399:13;4391:195;;;4470:13;;-1:-1:-1;;;;;4466:39:156;4454:52;;4526:12;;;;4561:15;;;;4502:1;4420:9;4391:195;;;-1:-1:-1;4602:3:156;;4150:461;-1:-1:-1;;;;;4150:461:156:o;4616:1601::-;5031:13;;-1:-1:-1;;;;;3693:31:156;3681:44;;4971:4;5000:3;5112:4;5104:6;5100:17;5094:24;5087:4;5076:9;5072:20;5065:54;5175:4;5167:6;5163:17;5157:24;5150:4;5139:9;5135:20;5128:54;5238:4;5230:6;5226:17;5220:24;5213:4;5202:9;5198:20;5191:54;5301:4;5293:6;5289:17;5283:24;5276:4;5265:9;5261:20;5254:54;5364:4;5356:6;5352:17;5346:24;5339:4;5328:9;5324:20;5317:54;5418:4;5410:6;5406:17;5400:24;5433:54;5481:4;5470:9;5466:20;5452:12;-1:-1:-1;;;;;3693:31:156;3681:44;;3627:104;5433:54;;5536:4;5528:6;5524:17;5518:24;5551:56;5601:4;5590:9;5586:20;5570:14;-1:-1:-1;;;;;3693:31:156;3681:44;;3627:104;5551:56;-1:-1:-1;5626:6:156;5669:15;;;5663:22;4014:12;;5733:18;;;4002:25;4076:4;4065:16;;4059:23;4043:14;;;4036:47;4132:4;4121:16;;4115:23;4099:14;;;4092:47;-1:-1:-1;;5810:6:156;5798:19;;5792:26;5783:6;5768:22;;5761:58;5877:6;5865:19;;5859:26;5850:6;5835:22;;5828:58;-1:-1:-1;;;;;3693:31:156;;5937:3;5922:19;;3681:44;5979:6;5973:3;5962:9;5958:19;5951:35;5995:47;6037:3;6026:9;6022:19;6014:6;-1:-1:-1;;;;;3693:31:156;3681:44;;3627:104;5995:47;-1:-1:-1;;;;;3693:31:156;;6093:3;6078:19;;3681:44;6135:2;6129:3;6118:9;6114:19;6107:31;6155:56;6207:2;6196:9;6192:18;6184:6;6155:56;:::i;:::-;6147:64;4616:1601;-1:-1:-1;;;;;;;;;4616:1601:156:o", + "object": "0x60806040523480156200001157600080fd5b50600436106200002e5760003560e01c8063e3420f4f1462000033575b600080fd5b6200004a620000443660046200024e565b62000066565b6040516001600160a01b03909116815260200160405180910390f35b60006060829050868686867f000000000000000000000000000000000000000000000000000000000000000085604051620000a190620000db565b620000b296959493929190620003ce565b604051809103906000f080158015620000cf573d6000803e3d6000fd5b50979650505050505050565b616b1380620004ed83390190565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620001265762000126620000e9565b60405290565b80356001600160a01b03811681146200014457600080fd5b919050565b6000606082840312156200015c57600080fd5b6040516060810181811067ffffffffffffffff82111715620001825762000182620000e9565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620001bb57600080fd5b8135602067ffffffffffffffff80831115620001db57620001db620000e9565b8260051b604051601f19603f83011681018181108482111715620002035762000203620000e9565b6040529384528581018301938381019250878511156200022257600080fd5b83870191505b84821015620002435781358352918301919083019062000228565b979650505050505050565b60008060008060008587036102408112156200026957600080fd5b6101c0808212156200027a57600080fd5b62000284620000ff565b915062000291886200012c565b82526020880135602083015260408801356040830152606088013560608301526080880135608083015260a088013560a083015260c088013560c0830152620002dd60e089016200012c565b60e0830152610100620002f2818a016200012c565b90830152610120620003078a8a830162000149565b81840152506101808801356101408301526101a0880135610160830152819650620003348189016200012c565b955050506101e086013592506200034f61020087016200012c565b915061022086013567ffffffffffffffff8111156200036d57600080fd5b6200037b88828901620001a9565b9150509295509295909350565b600081518084526020808501945080840160005b83811015620003c35781516001600160a01b0316875295820195908201906001016200039c565b509495945050505050565b86516001600160a01b0316815260006102606020890151602084015260408901516040840152606089015160608401526080890151608084015260a089015160a084015260c089015160c084015260e08901516200043760e08501826001600160a01b03169052565b50610100898101516001600160a01b038116858301525050610120898101518051858301526020810151610140860152604081015161016086015250506101408901516101808401526101608901516101a08401526001600160a01b0388166101c0840152866101e0840152620004ba6102008401876001600160a01b03169052565b6001600160a01b03851661022084015280610240840152620004df8184018562000388565b999850505050505050505056fe6102a060405260016000553480156200001757600080fd5b5060405162006b1338038062006b138339810160408190526200003a916200077c565b6001600160a01b03808616608052831660a05260c084905260408051808201825260018152603160f81b6020918201529051879187918791879185918591859185918591859185918591620000f6917f2aef22f9d7df5f9d21c56d14029233f3fdaa91917727e1eb68e504d27072d6cd917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6914691309101938452602084019290925260408301526001600160a01b0316606082015260800190565b60408051601f19818403018152918152815160209092019190912060e05284516001600160a01b0316610100528401516103e8111592506200014e915050576040516349db44f560e01b815260040160405180910390fd5b60408101516101a05260608101516101c05260a08101516000036200018657604051635428734d60e01b815260040160405180910390fd5b60a081018051610120525160808201511080620001b757508060a001518160800151620001b49190620008c8565b15155b15620001d65760405163253fffcf60e11b815260040160405180910390fd5b60808101516101405260c08101516101605260208101516101805260e0810151601180546001600160a01b0319166001600160a01b03928316179055610100820151166102405261012081015151670de0b6b3a764000010806200024a5750670de0b6b3a764000081610120015160200151115b80620002665750670de0b6b3a764000081610120015160400151115b1562000285576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101e0528051602001516102005251604001516102205261016001516102605260005b8461014001518110156200033d576040805180820190915263ffffffff4281168252600060208301818152601280546001810182559252925192516001600160e01b03166401000000000292909116919091177fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344490910155806200033481620008eb565b915050620002b0565b5050506001600160a01b0388166102805250620003609450506200058392505050565b86602001511462000384576040516355f2a42f60e01b815260040160405180910390fd5b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000913565b6001600160a01b031686600001516001600160a01b0316146200041f57604051630722152560e11b815260040160405180910390fd5b85516102805160405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af115801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c91906200093a565b620004ba576040516340b27c2160e11b815260040160405180910390fd5b60005b815181101562000576576000828281518110620004de57620004de6200095e565b60200260200101519050610280516001600160a01b0316816001600160a01b03161480620005205750610100516001600160a01b0316816001600160a01b0316145b156200053f5760405163350b944160e11b815260040160405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19166001179055806200056d81620008eb565b915050620004bd565b505050505050506200098e565b610280516040516303d1689d60e11b8152670de0b6b3a764000060048201526000916001600160a01b0316906307a2d13a90602401602060405180830381865afa158015620005d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005fc919062000974565b905090565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156200063d576200063d62000601565b60405290565b6001600160a01b03811681146200065957600080fd5b50565b8051620006698162000643565b919050565b6000606082840312156200068157600080fd5b604051606081016001600160401b0381118282101715620006a657620006a662000601565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f830112620006df57600080fd5b815160206001600160401b0380831115620006fe57620006fe62000601565b8260051b604051601f19603f8301168101818110848211171562000726576200072662000601565b6040529384528581018301938381019250878511156200074557600080fd5b83870191505b8482101562000771578151620007618162000643565b835291830191908301906200074b565b979650505050505050565b6000806000806000808688036102608112156200079857600080fd5b6101c080821215620007a957600080fd5b620007b362000617565b9150620007c0896200065c565b82526020890151602083015260408901516040830152606089015160608301526080890151608083015260a089015160a083015260c089015160c08301526200080c60e08a016200065c565b60e083015261010062000821818b016200065c565b90830152610120620008368b8b83016200066e565b81840152506101808901516101408301526101a089015161016083015281975062000863818a016200065c565b965050506101e087015193506200087e61020088016200065c565b92506200088f61022088016200065c565b6102408801519092506001600160401b03811115620008ad57600080fd5b620008bb89828a01620006cd565b9150509295509295509295565b600082620008e657634e487b7160e01b600052601260045260246000fd5b500690565b6000600182016200090c57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200092657600080fd5b8151620009338162000643565b9392505050565b6000602082840312156200094d57600080fd5b815180151581146200093357600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200098757600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051615eee62000c25600039600081816120df0152818161217e0152818161220001528181612c1e01528181612c9f01528181612cdf0152612d720152600061458f0152600081816105590152818161066901528181610cb90152610d1f015260008181612346015281816124200152818161471f01528181614b5e01528181614bd701528181614f8e0152614fff0152600081816111b201528181612318015281816123f201528181613dbf01528181614bab0152614fd30152600081816146db01528181614b320152614f6201526000818161074701528181610f97015281816116670152818161184f01528181611b190152611e1d015260008181610a7c01528181610ac701528181610be10152818161383601528181613b6101528181613bb0015281816143ae015281816147eb015281816148dd01526149190152600081816107ff01528181610b50015281816118b0015281816125570152818161259f015281816130fe0152818161381001528181613d150152614121015260008181610b93015281816118f201528181612535015281816125c0015281816130dc0152818161385c01528181613cf301526140ad01526000818161088101528181610b72015281816110a90152818161113a015281816118d101528181611b8301528181611edd015281816124980152818161333c015281816140d20152818161421401528181614a760152614d23015260008181611d1e01528181611dc701526122450152600061209b01526000818161038601526113d601526000612ff801526000612fbb015260006101570152615eee6000f3fe6080604052600436106101405760003560e01c80636f8c3a5b116100b6578063c23632a71161006f578063c23632a7146104a8578063c326a903146104c8578063c576201d146104db578063e44808bc146104ee578063ed64bab21461050e578063fa3fcea71461052e57610140565b80636f8c3a5b146103e85780637180c8ca146104085780639032c726146104285780639cd241af14610448578063a22cb46514610468578063ab033ea91461048857610140565b80632002b333116101085780632002b333146102ff5780632787d5951461032057806330adf81f146103405780633644e515146103745780634536ee2f146103a85780634ed2d6ac146103c857610140565b806301681a621461025057806302329a2914610272578063116606451461029257806317fad7fc146102bf5780631c0f12b6146102df575b34801561014c57600080fd5b5060003660606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560405161018f929190615731565b600060405180830381855af49150503d80600081146101ca576040519150601f19603f3d011682016040523d82523d6000602084013e6101cf565b606091505b509150915081156101f357604051638bb0a34b60e01b815260040160405180910390fd5b60006101fe82615741565b90506001600160e01b03198116636e64089360e11b1461022057815160208301fd5b815160031981016004840190815292610241918101602001906024016157b2565b80519650602001945050505050f35b34801561025c57600080fd5b5061027061026b36600461586c565b61054e565b005b34801561027e57600080fd5b5061027061028d366004615897565b610692565b6102a56102a03660046158b4565b6106df565b604080519283526020830191909152015b60405180910390f35b3480156102cb57600080fd5b506102706102da366004615943565b610939565b3480156102eb57600080fd5b506102706102fa3660046159d8565b6109f7565b61031261030d3660046158b4565b610a0a565b6040519081526020016102b6565b34801561032c57600080fd5b5061031261033b366004615897565b610c6c565b34801561034c57600080fd5b506103127f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e97367381565b34801561038057600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b457600080fd5b506102a56103c33660046158b4565b610d50565b3480156103d457600080fd5b506102706103e3366004615a20565b610f1f565b3480156103f457600080fd5b50610312610403366004615a5f565b610f6d565b34801561041457600080fd5b50610270610423366004615ab5565b611284565b34801561043457600080fd5b50610270610443366004615aee565b6112fc565b34801561045457600080fd5b50610270610463366004615b6e565b61154a565b34801561047457600080fd5b50610270610483366004615ab5565b61155b565b34801561049457600080fd5b506102706104a336600461586c565b6115c7565b3480156104b457600080fd5b506102a56104c33660046158b4565b61163b565b6103126104d6366004615a5f565b6117f2565b6102a56104e93660046158b4565b611aba565b3480156104fa57600080fd5b50610270610509366004615ba6565b611c9d565b34801561051a57600080fd5b50610270610529366004615bf7565b611ced565b34801561053a57600080fd5b50610312610549366004615a5f565b611df3565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906105975750336000908152600f602052604090205460ff16155b156105b4576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03811660009081526014602052604090205460ff166105ed5760405163350b944160e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190615c10565b905061068e6001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083612001565b5050565b336000908152600f602052604090205460ff166106c1576040516282b42960e81b815260040160405180910390fd5b600c8054911515600160881b0260ff60881b19909216919091179055565b60008060005460011461070d5760405162461bcd60e51b815260040161070490615c29565b60405180910390fd5b6002600055600c54600160881b900460ff161561073d576040516313d0ff5960e31b815260040160405180910390fd5b610745612064565b7f00000000000000000000000000000000000000000000000000000000000000008610156107865760405163211ddda360e11b815260040160405180910390fd5b6000806107938886612085565b9150915060006107a161223e565b90506107ad8183612279565b5060008060006107bd868661250e565b600854919a509295509093509091506107e7908390600160801b90046001600160801b0316615c63565b610824846107f361263f565b6107fd9190615c76565b7f000000000000000000000000000000000000000000000000000000000000000090612667565b11156108435760405163512095c760e01b815260040160405180910390fd5b868b11156108645760405163c972651760e01b815260040160405180910390fd5b80601060008282546108769190615c76565b909155506108a690507f000000000000000000000000000000000000000000000000000000000000000085615c76565b97506108b683888488888d612683565b60006108c360018a612906565b90506108d0818c8a61293b565b604080518a8152602081018f90529081018990528d9082906001600160a01b038e16907f7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b39060600160405180910390a350505050505050505b6001600055909590945092505050565b6001600160a01b038616158061095657506001600160a01b038516155b156109745760405163f0dd15fd60e01b815260040160405180910390fd5b8281146109945760405163174861a760e31b815260040160405180910390fd5b60005b838110156109ee576109dc8585838181106109b4576109b4615c89565b9050602002013588888686868181106109cf576109cf615c89565b90506020020135336129e4565b806109e681615c9f565b915050610997565b50505050505050565b610a0484848484336129e4565b50505050565b60008054600114610a2d5760405162461bcd60e51b815260040161070490615c29565b6002600055610a3a612064565b600c54600160801b900460ff1615610a6557604051637983c05160e01b815260040160405180910390fd5b600080610a728785612085565b9092509050610aa27f00000000000000000000000000000000000000000000000000000000000000006002615cb8565b821015610ac257604051632afb507160e21b815260040160405180910390fd5b610aed7f00000000000000000000000000000000000000000000000000000000000000006002615cb8565b610af79083615c63565b9250610b0a610b0461223e565b82612279565b50600c805460ff60801b1916600160801b179055610b2782612b6a565b600880546001600160801b0319166001600160801b0392909216919091179055610bbc610bb7837f0000000000000000000000000000000000000000000000000000000000000000897f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612b80565b612b6a565b600880546001600160801b03928316600160801b029216919091179055610c056000807f000000000000000000000000000000000000000000000000000000000000000061293b565b610c116000868561293b565b60408051848152602081018990529081018790526001600160a01b038616907f60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e9060600160405180910390a250506001600055949350505050565b60008054600114610c8f5760405162461bcd60e51b815260040161070490615c29565b60026000908155338152600f602052604090205460ff16158015610cdc5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b8015610cf357506011546001600160a01b03163314155b15610d10576040516282b42960e81b815260040160405180910390fd5b601080546000909155610d44817f000000000000000000000000000000000000000000000000000000000000000085612bea565b60016000559392505050565b600080600054600114610d755760405162461bcd60e51b815260040161070490615c29565b60026000908155610d84612d52565b9050610d91610b0461223e565b50610d9b81612de5565b600d548792506001600160801b031680831115610dbf57806001600160801b031692505b82600003610dd557600080935093505050610929565b610de4600360f81b3385612ebf565b600d546001600160801b03600160801b909104811690600090610e0c90869084908616612f5f565b9050610e1785612b6a565b610e219084615ccf565b600d80546001600160801b0319166001600160801b0392909216919091179055610e4a81612b6a565b600d8054601090610e6c908490600160801b90046001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550610e9b818989612bea565b955085610ea88a87612667565b1115610ec75760405163c972651760e01b815260040160405180910390fd5b60408051868152602081018890526001600160a01b038a16917f07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac910160405180910390a2505050506001600055909590945092505050565b83610f2981612f7d565b6001600160a01b0316336001600160a01b031614610f5a57604051632aab8bd360e01b815260040160405180910390fd5b610f668585858561303a565b5050505050565b60008054600114610f905760405162461bcd60e51b815260040161070490615c29565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015610fd65760405163211ddda360e11b815260040160405180910390fd5b6000610fe0612d52565b9050610fec8782612279565b50611002610ffb600289612906565b3388612ebf565b6000806000806110138a868d6130a7565b6008549397509195509350915061103b908490600160801b90046001600160801b0316615c63565b611047856107f361263f565b11156110665760405163512095c760e01b815260040160405180910390fd5b8a4210156111305780601060008282546110809190615c76565b90915550600090506110928284615c63565b90508b6110a28c868489856131ad565b60006110ce7f000000000000000000000000000000000000000000000000000000000000000083615c63565b6000818152600e6020526040812060010154919250600f9190910b906110ff908f908a908a90889088908f90613335565b6000828152600e602052604090206001015461112290600f83810b91900b6134d3565b61112b89612de5565b505050505b6000600e8161115f7f00000000000000000000000000000000000000000000000000000000000000008f615c63565b815260208101919091526040016000908120546001600160801b03169150428d111561118b57866111a4565b60008d8152600e60205260409020546001600160801b03165b905060006111d68d8685858c7f00000000000000000000000000000000000000000000000000000000000000006135e0565b905060006111e5828d8d612bea565b90508c8110156112085760405163c972651760e01b815260040160405180910390fd5b8e8e611215600283612906565b8e6001600160a01b03167f39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f848685604051611263939291909283526020830191909152604082015260600190565b60405180910390a3505060016000559e9d5050505050505050505050505050565b6011546001600160a01b031633146112ae576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0382166000818152600f6020526040808220805460ff1916851515179055517fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab9190a25050565b8342111561131d5760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166113445760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b0387811660008181526007602090815260408083205481517f65619c8664d6db8aae8c236ad19598696159942a4245b23b45565cc18e9736738185015280830195909552948b166060850152891515608085015260a084019490945260c08084018990528451808503909101815260e08401909452835193019290922061190160f01b6101008301527f00000000000000000000000000000000000000000000000000000000000000006101028301526101228201526101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611470573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b0316146114ae57604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b03891660009081526007602052604081208054916114d283615c9f565b90915550506001600160a01b038981166000818152600360209081526040808320948d1680845294825291829020805460ff19168c151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050505050565b6115568383833361303a565b505050565b3360008181526003602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6011546001600160a01b031633146115f1576040516282b42960e81b815260040160405180910390fd5b601180546001600160a01b0319166001600160a01b0383169081179091556040517f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab90600090a250565b6000806000546001146116605760405162461bcd60e51b815260040161070490615c29565b60026000557f00000000000000000000000000000000000000000000000000000000000000008610156116a65760405163211ddda360e11b815260040160405180910390fd5b60006116b0612d52565b90506116bd610b0461223e565b506116c781612de5565b6002602052600080516020615e9983398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091611722916001600160801b0390911690615c63565b905060006117308284615c76565b905061173e6000338c612ebf565b600061174d8b86848787613632565b96509050611760600360f81b8a8861293b565b61176b818a8a612bea565b9650868a111561178e5760405163c972651760e01b815260040160405180910390fd5b604080518c8152602081018990529081018790528b906001600160a01b038b16907f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9060600160405180910390a25050505050506001600055909590945092505050565b600080546001146118155760405162461bcd60e51b815260040161070490615c29565b6002600055600c54600160881b900460ff1615611845576040516313d0ff5960e31b815260040160405180910390fd5b61184d612064565b7f000000000000000000000000000000000000000000000000000000000000000086101561188e5760405163211ddda360e11b815260040160405180910390fd5b600061191661189b61263f565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613734565b90508581108061192557508481115b1561194357604051633b61151160e11b815260040160405180910390fd5b6000806119508986612085565b9150915061195f610b0461223e565b50600d54600360f81b600090815260026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5490916119ab916001600160801b0390911690615c63565b60008080526002602052600080516020615e9983398151915254919250906119d4908390615c76565b90506000806119e28561376f565b905060006119ef826138d6565b90506119fa87613b48565b6008546001600160801b038082168452600b54600160801b90819004600f0b6020860152909104166040830152611a30826138d6565b9250611a488482611a418187615c63565b9190612f5f565b98505050611a5860008a8961293b565b611a6184612de5565b60408051888152602081018e90526001600160a01b038b16917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca910160405180910390a250506001600055509298975050505050505050565b600080600054600114611adf5760405162461bcd60e51b815260040161070490615c29565b6002600055600c54600160881b900460ff1615611b0f576040516313d0ff5960e31b815260040160405180910390fd5b611b17612064565b7f0000000000000000000000000000000000000000000000000000000000000000861015611b585760405163211ddda360e11b815260040160405180910390fd5b6000611b62612d52565b90506000611b6e61223e565b90506000611b7c8284612279565b9050611ba87f000000000000000000000000000000000000000000000000000000000000000083615c76565b9450600080611bc18b8685670de0b6b3a7640000613ccd565b6010805493995091945092508291600090611bdd908490615c76565b90915550505084891015611c045760405163c972651760e01b815260040160405180910390fd5b611c0e8588612085565b5050611c1d8a8683878a613df1565b6000611c2a600288612906565b9050611c37818a8d61293b565b60408051888152602081018890529081018c90528b9082906001600160a01b038c16907f851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b9060600160405180910390a35050505050506001600055909590945092505050565b84611ca781612f7d565b6001600160a01b0316336001600160a01b031614611cd857604051632aab8bd360e01b815260040160405180910390fd5b611ce586868686866129e4565b505050505050565b6000818152600e60205260409020546001600160801b031615611d0d5750565b6000611d1761223e565b9050611d437f000000000000000000000000000000000000000000000000000000000000000083615d0c565b151580611d4f57508181105b15611d6d5760405163ecd29e8160e01b815260040160405180910390fd5b808203611d855761155681611d80612d52565b612279565b815b6000818152600e60205260409020546001600160801b0316828203611db157611dae612d52565b90505b8015611dc157610f668482612279565b50611dec7f000000000000000000000000000000000000000000000000000000000000000082615c76565b9050611d87565b60008054600114611e165760405162461bcd60e51b815260040161070490615c29565b60026000557f0000000000000000000000000000000000000000000000000000000000000000851015611e5c5760405163211ddda360e11b815260040160405180910390fd5b6000611e66612d52565b9050611e728782612279565b50611e81610ffb600189612906565b600080600080611e928a868d61403f565b93509350935093508a421015611f66578060106000828254611eb49190615c76565b9091555060009050611ec68284615c76565b90508b611ed68c868489856141aa565b6000611f027f000000000000000000000000000000000000000000000000000000000000000083615c63565b6000818152600e60205260409020600190810154919250600f9190910b90611f35908f908a908a90889088908f90613335565b6000828152600e6020526040902060010154611f5890600f83810b91900b6134d3565b611f6189612de5565b505050505b6000611f73838a8a612bea565b9050808a1115611f965760405163c972651760e01b815260040160405180910390fd5b611fa160018d612906565b604080518e8152602081018490529081018d90526001600160a01b038b16907fe8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c9060600160405180910390a360016000559b9a5050505050505050505050565b6040516001600160a01b03831660248201526044810182905261155690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614414565b341561208357604051631574f9f360e01b815260040160405180910390fd5b565b6000808215612165576120c36001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330876144e9565b604051636e553f6560e01b8152600481018590523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303816000875af1158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190615c10565b915061215e612d52565b9050612237565b6040516363737ac960e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c6e6f59290602401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f19190615c10565b90506122286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846144e9565b809250612233612d52565b9150505b9250929050565b600061226a7f000000000000000000000000000000000000000000000000000000000000000042615d0c565b6122749042615c63565b905090565b6000828152600e6020526040812080546001600160801b031615158061229e57504284115b156122b457546001600160801b03169050612508565b6122bd83612b6a565b81546001600160801b0319166001600160801b039190911617815560006002816122e78288612906565b81526020019081526020016000205490506000808211156123b157600061230e8387614521565b9050600061233c827f0000000000000000000000000000000000000000000000000000000000000000612667565b9050600061236a827f0000000000000000000000000000000000000000000000000000000000000000612667565b9050806010600082825461237e9190615c76565b9091555061238e90508183615c63565b6123989084615c76565b92506123a98560008560008d6131ad565b600193505050505b6000600260006123c260018a612906565b8152602001908152602001600020549050600081111561248b5760006123e88288614521565b90506000612416827f0000000000000000000000000000000000000000000000000000000000000000612667565b90506000612444827f0000000000000000000000000000000000000000000000000000000000000000612667565b905080601060008282546124589190615c76565b9091555061246890508183615c63565b6124729084615c63565b92506124838460008560008e6141aa565b600194505050505b81156125005760006124bd7f000000000000000000000000000000000000000000000000000000000000000089615c63565b6000818152600e6020526040902060010180546001600160801b0319811691829055919250600f91820b916124f49183910b6134d3565b6124fd88612de5565b50505b859450505050505b92915050565b60008060008061257b61251f61263f565b600854600160801b90046001600160801b0316887f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000614536565b925060006125e461258a61263f565b600854600160801b90046001600160801b03167f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614562565b90506125ef81614573565b6000806125fd89848a6146cd565b909250905061260c8287615c63565b94506126188186615c76565b955061262581848a612f5f565b9350612631848a615c63565b965050505092959194509250565b600854600b54600091612274916001600160801b0390911690600160801b9004600f0b61474d565b600061267c8383670de0b6b3a7640000612f5f565b9392505050565b6009546001600160801b03166126be610bb7826126a885670de0b6b3a7640000615cb8565b600a546001600160801b031691908a600161476a565b600a80546001600160801b0319166001600160801b03929092169190911790556000838152600e602052604081209061273090610bb790600290612703600188612906565b81526020810191909152604001600020548354600160801b90046001600160801b031690888b600161476a565b81546001600160801b03908116600160801b9282168302178355600a5461276592610bb79291048116908516888b600161476a565b600a80546001600160801b03928316600160801b02921691909117905561278b88612b6a565b600880546000906127a69084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506127d386612b6a565b600880546010906127f5908490600160801b90046001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061282287612b6a565b61282c9083615d20565b600980546001600160801b0319166001600160801b0383161790556001820154909250600f0b60006128766128618b89612667565b61286c8b6002615cb8565b610bb79190615c63565b6001840180549192508291600090612892908490600f0b615d40565b82546001600160801b039182166101009390930a92830291909202199091161790555060018301546128cb90600f84810b91900b6134d3565b6128d4876147e4565b6128f1576040516318846de960e01b815260040160405180910390fd5b6128fa87612de5565b50505050505050505050565b60006001600160f81b038211156129305760405163b7d0949760e01b815260040160405180910390fd5b5060f89190911b1790565b60008381526001602090815260408083206001600160a01b03861684529091528120805483929061296d908490615c76565b909155505060008381526002602052604081208054839290612990908490615c76565b909155505060408051848152602081018390526001600160a01b0384169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291015b60405180910390a4505050565b836001600160a01b0316816001600160a01b031614612aa8576001600160a01b0380851660009081526003602090815260408083209385168352929052205460ff16612aa85760008581526004602090815260408083206001600160a01b03808916855290835281842090851684529091529020546000198114612aa65760008681526004602090815260408083206001600160a01b03808a168552908352818420908616845290915281208054859290612aa0908490615c63565b90915550505b505b60008581526001602090815260408083206001600160a01b038816845290915281208054849290612ada908490615c63565b909155505060008581526001602090815260408083206001600160a01b038716845290915281208054849290612b11908490615c76565b909155505060408051868152602081018490526001600160a01b038086169287821692918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6000600160801b8210612b7c57600080fd5b5090565b600080612b91846301e13380614521565b9050612bdd612bcd612bab670de0b6b3a76400008661484f565b612bb58885612667565b612bc790670de0b6b3a7640000615c76565b90614864565b612bd7888a612667565b90612667565b9150505b95945050505050565b60008115612c9257604051635d043b2960e11b8152600481018590526001600160a01b0384811660248301523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063ba087652906064016020604051808303816000875af1158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b9190615c10565b905061267c565b612cc66001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168486612001565b6040516303d1689d60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be19190615c10565b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015612dc1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122749190615c10565b6002602052600080516020615e9983398151915254600d54600360f81b60009081527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f549091612e40916001600160801b0390911690615c63565b90506000612e4e8284615c76565b90506000612e63612e5e8661376f565b6138d6565b90506000612e72858385612f5f565b9050600080612e80886148bb565b905082811115612e9757612e948382615c63565b91505b6000821180612ea4575083155b15612eb557612eb582858789614960565b5050505050505050565b60008381526001602090815260408083206001600160a01b038616845290915281208054839290612ef1908490615c63565b909155505060008381526002602052604081208054839290612f14908490615c63565b909155505060408051848152602081018390526000916001600160a01b0385169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291016129d7565b6000826000190484118302158202612f7657600080fd5b5091020490565b604080513060208083019190915281830193909352815180820383018152606080830184528151918501919091206001600160f81b031960808401527f000000000000000000000000000000000000000000000000000000000000000090911b6bffffffffffffffffffffffff1916608183015260958201527f000000000000000000000000000000000000000000000000000000000000000060b5808301919091528251808303909101815260d5909101909152805191012090565b60008481526004602090815260408083206001600160a01b0385811680865291845282852090881680865290845293829020869055905185815290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050565b60008060008060006130b886614a49565b90506131226130c561263f565b600854600160801b90046001600160801b03168a847f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000614a9a565b91965094509250600061313661258a61263f565b905061314181614573565b6000806000806131538d87878f614b0a565b935093509350935081846131679190615c63565b613171908b615c76565b995061317d8385615c76565b6131879089615c76565b97508989896131968486615c76565b995099509950995050505050505093509350935093565b600954600160801b90046001600160801b03166131ef610bb7826131d985670de0b6b3a7640000615cb8565b600b546001600160801b031691908a600061476a565b600b80546001600160801b0319166001600160801b039290921691909117905561321886612b6a565b6132229082615ccf565b600980546001600160801b03928316600160801b0292169190911790555061324983612b6a565b600880546000906132649084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061329c82846132979190615c63565b614c09565b600b80546010906132b8908490600160801b9004600f0b615d40565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055506132e884612b6a565b6008805460109061330a908490600160801b90046001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505050565b60006133617f000000000000000000000000000000000000000000000000000000000000000085615c63565b9050600060026000613374600188612906565b8152602001908152602001600020549050600060026000613396600289612906565b81526020019081526020016000205490508160001480156133b5575080155b156133de576000838152600e6020526040902060010180546001600160801b03191690556128fa565b60006134228b6133ee8c89612667565b6133f9906002615cb8565b8b6134048c8b612667565b61340e9190615c76565b6134189190615c63565b610bb79190615c76565b9050841561347a576000848152600e60205260408120600101805483929061344e908490600f0b615d6d565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055506134c6565b6000848152600e60205260408120600101805483929061349e908490600f0b615d40565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b5050505050505050505050565b80821380156134e3575060008212155b156135635760006134f48282614c33565b6134fe9084615d9a565b600c5490915061351f906132979083906001600160801b0316600f0b614c49565b600c805460009061353a9084906001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b8181131561068e57600082126135d25761357c82614c09565b61358582614c09565b61358f9190615d6d565b600c80546000906135aa9084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050565b61358f613297826000614c33565b6000806135f9856135f18887614c58565b8a9190612f5f565b9050613606888486612f5f565b6136109082615c76565b905086811115613627576136248782615c63565b91505b509695505050505050565b60008060006136408761376f565b9050600061364d826138d6565b905061365f61365a612d52565b6148bb565b935061366c848a88612f5f565b935061367f61367a85615dba565b613b48565b6008546001600160801b038082168452600b54600160801b90819004600f0b602086015290910416604083015260006136b7836138d6565b905060006136c6898385612f5f565b90506136d28b8a615d9a565b6136dc9082615d9a565b905060008112156137255760006136fd6136f583615dba565b85908c612f5f565b90506137098188615c63565b965061371481613b48565b61371f81898d614c6d565b60009150505b93505050509550959350505050565b60008061374387878786614562565b9050612bdd613757826301e1338087614cb2565b61376983670de0b6b3a7640000615c63565b90614521565b6137cc60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600b54600160801b90819004600f0b6020850152909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600954821660e0820152600a54909161010083019161389f9116614cd8565b81526009546001600160801b03600160801b90910481166020830152600b546040909201916138ce9116614cd8565b905292915050565b6000806138f683610140015184610120015161266790919063ffffffff16565b61010084015160e085015161390a91612667565b6139149190615d9a565b9050600061392a8460000151856020015161474d565b905060008213156139cc57600061396c8286604001518760a001518860c00151670de0b6b3a764000061395d9190615c63565b89606001518a60800151614d4e565b915061397a90508184614dd1565b905080156139c6576139b3828660400151838860c00151670de0b6b3a76400006139a49190615c63565b89606001518a60800151614de0565b855186906139c2908390615c63565b9052505b50613a8a565b6000821215613a8a576139de82615dba565b91506000613a128286604001518760c00151670de0b6b3a7640000613a039190615c63565b88606001518960800151614e14565b9150613a2090508184614dd1565b90508015613a6c57613a59828660400151838860c00151670de0b6b3a7640000613a4a9190615c63565b89606001518a60800151614e9e565b85518690613a68908390615c76565b9052505b613a768184615c63565b85518690613a85908390615c76565b905250505b6000613ab9856101000151670de0b6b3a7640000613aa89190615c63565b606087015160e08801519190612f5f565b613ae7866101400151670de0b6b3a7640000613ad59190615c63565b60608801516101208901519190612f5f565b613af19190615d9a565b90506000818660000151613b059190615dd6565b90508560a00151811215613b2c5760405163aeeb825d60e01b815260040160405180910390fd5b80865260a0860151613b3e9082615c63565b9695505050505050565b80600003613b535750565b6008546001600160801b03167f0000000000000000000000000000000000000000000000000000000000000000811015613ba05760405163585fe6df60e11b815260040160405180910390fd5b6000613bac8383615dd6565b90507f0000000000000000000000000000000000000000000000000000000000000000811215613bef5760405163585fe6df60e11b815260040160405180910390fd5b613bf881612b6a565b600880546001600160801b0319166001600160801b0392909216919091179055600b54600090600160801b9004600f0b818112613c4157613c3a838286612f5f565b9150613c61565b613c55613c4d82615dba565b849086612f5f565b613c5e90615dba565b91505b613c6a82614c09565b600b80546001600160801b03908116600160801b938216840217909155600854613ca992610bb792910416613c9f878561474d565b611a41878761474d565b600880546001600160801b03928316600160801b0292169190911790555050505050565b6000806000613d39613cdd61263f565b600854600160801b90046001600160801b0316897f00000000000000000000000000000000000000000000000000000000000000008a7f0000000000000000000000000000000000000000000000000000000000000000614f19565b915086613d468388612667565b1115613d655760405163512095c760e01b815260040160405180910390fd5b6000613d7261258a61263f565b9050613d7d81614573565b6000613d8b8987848b614f3a565b9450909150613d9c90508382615c63565b613da69085615c63565b9350613de388612bd78b613dba8789615c63565b8b8d8e7f00000000000000000000000000000000000000000000000000000000000000006135e0565b945050509450945094915050565b600954613e3490610bb790600160801b90046001600160801b0316613e1e84670de0b6b3a7640000615cb8565b600b546001600160801b0316919089600161476a565b600b80546001600160801b0319166001600160801b03929092169190911790556000613e5f84612b6a565b600854613e7591906001600160801b0316615ccf565b600880546001600160801b0319166001600160801b0383161790559050613e9b86612b6a565b60088054601090613ebd908490600160801b90046001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550613eea86612b6a565b60098054601090613f0c908490600160801b90046001600160801b0316615d20565b82546101009290920a6001600160801b03818102199093169183160217909155600b54600854600160801b909104600f0b911612159050613f605760405163585fe6df60e11b815260040160405180910390fd5b6000613f6a61223e565b6000818152600e6020526040812060010154919250600f9190910b90613f908989615c76565b9050613f9b81612b6a565b6000848152600e602052604081206001018054909190613fbf908490600f0b615d6d565b82546001600160801b039182166101009390930a9283029190920219909116179055506000838152600e602052604090206001015461400590600f84810b91900b6134d3565b61400e866147e4565b61402b576040516318846de960e01b815260040160405180910390fd5b61403486612de5565b505050505050505050565b600080600080600061405086614a49565b90506000864210614078576000878152600e60205260409020546001600160801b031661407a565b875b905061414561408761263f565b600860000160109054906101000a90046001600160801b03166001600160801b03168b857f0000000000000000000000000000000000000000000000000000000000000000600e60007f00000000000000000000000000000000000000000000000000000000000000008f6140fc9190615c63565b8152602081019190915260400160002054600160801b90046001600160801b0316878f7f000000000000000000000000000000000000000000000000000000000000000061503b565b91975095509350600061415961258a61263f565b905061416481614573565b6000806141738c86858e614f3a565b97509092509050614184828a615c63565b98506141908183615c76565b61419a9088615c63565b9650505050505093509350935093565b6009546001600160801b03166141e5610bb7826141cf85670de0b6b3a7640000615cb8565b600a546001600160801b031691908a600061476a565b600a80546001600160801b0319166001600160801b0392831617905561427390610bb7908316600e60006142397f000000000000000000000000000000000000000000000000000000000000000088615c63565b81526020810191909152604001600090812054600a546001600160801b03600160801b918290048116949391909204909116908b9061476a565b600a80546001600160801b03928316600160801b02921691909117905561429986612b6a565b6142a39082615ccf565b600980546001600160801b0319166001600160801b0392909216919091179055506142cd83612b6a565b600880546000906142e89084906001600160801b0316615ccf565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061431b82846132979190615c63565b600b8054601090614337908490600160801b9004600f0b615d6d565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555061436784612b6a565b60088054601090614389908490600160801b90046001600160801b0316615d20565b82546101009290920a6001600160801b038181021990931691831602179091556008547f00000000000000000000000000000000000000000000000000000000000000009116109050806143f65750600b54600854600160801b909104600f0b6001600160801b03909116125b15610f665760405163585fe6df60e11b815260040160405180910390fd5b6000614469826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166150d09092919063ffffffff16565b905080516000148061448a57508080602001905181019061448a9190615dfe565b6115565760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610704565b6040516001600160a01b0380851660248301528316604482015260648101829052610a049085906323b872dd60e01b9060840161202d565b600061267c83670de0b6b3a764000084612f5f565b600061455787878761455088670de0b6b3a7640000615c63565b87876150e7565b979650505050505050565b6000612be182612bc7858888612f5f565b6013546001600160801b03600160801b820481169116426145b47f000000000000000000000000000000000000000000000000000000000000000084615c76565b11156145bf57505050565b6000601282815481106145d4576145d4615c89565b60009182526020822001805490925063ffffffff8116916401000000009091046001600160e01b0316906146088342615c63565b601254909150878202830190600090614622886001615c76565b61462c9190615d0c565b905060405180604001604052804263ffffffff168152602001836001600160e01b03168152506012828154811061466557614665615c89565b60009182526020918290208351938301516001600160e01b03166401000000000263ffffffff90941693909317920191909155604080518082019091526001600160801b03928316808252429093169101819052600160801b02176013555050505050505050565b60008061471785612bd785817f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061470d818c614521565b612bd79190615c63565b9150614743827f0000000000000000000000000000000000000000000000000000000000000000612667565b9050935093915050565b60008061475a8385615d9a565b9050600081121561267c57600080fd5b600081156147aa576147a361477f8487615c76565b6147898587612667565b614793888a612667565b61479d9190615c76565b9061484f565b9050612be1565b8285036147b957506000612be1565b613b3e6147c68487615c63565b6147d08587612667565b6147da888a612667565b61479d9190615c63565b60006148107f000000000000000000000000000000000000000000000000000000000000000083612667565b600c54600854614847916000916001600160801b03918216600f0b91614837911687612667565b6148419190615d9a565b90614c33565b121592915050565b600061267c83670de0b6b3a764000084614cb2565b60008160000361487d5750670de0b6b3a7640000612508565b8260000361488d57506000612508565b8160006148998561515a565b90508181026148b0670de0b6b3a764000082615e1b565b9050613b3e8161536e565b600c5460009081906148d6906001600160801b031684614521565b90506149027f000000000000000000000000000000000000000000000000000000000000000082615c76565b6008546001600160801b0316111561495a576008547f00000000000000000000000000000000000000000000000000000000000000009061494d9083906001600160801b0316615c63565b6149579190615c63565b91505b50919050565b600080841161496f578261497a565b61497a838686612f5f565b90508060000361498a5750610a04565b8085838211156149a5578391506149a2878385612f5f565b90505b6149ae82612b6a565b600d80546000906149c99084906001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506149f681612b6a565b600d8054601090614a18908490600160801b90046001600160801b0316615d20565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506109ee8161367a90615dba565b600080614a5461223e565b9050808311614a64576000614a6e565b614a6e8184615c63565b9150614957827f0000000000000000000000000000000000000000000000000000000000000000614521565b60008080614abb614ab388670de0b6b3a7640000615c63565b899087612f5f565b9050614ac78888612667565b91508115614afd57614aee8a8a84614ae78a670de0b6b3a7640000615c63565b8989614e9e565b9250614afa8382615c76565b90505b9750975097945050505050565b6000808080614b2186670de0b6b3a7640000615c63565b9350614b568786611a418b612bd7897f0000000000000000000000000000000000000000000000000000000000000000612667565b9350614b82847f0000000000000000000000000000000000000000000000000000000000000000612667565b91506000614ba3614b9b89670de0b6b3a7640000615c63565b8a9088612f5f565b9050614bcf817f0000000000000000000000000000000000000000000000000000000000000000612667565b9350614bfb847f0000000000000000000000000000000000000000000000000000000000000000612667565b915050945094509450949050565b600060016001607f1b03198212801590614c2a575060016001607f1b038213155b612b7c57600080fd5b6000818313614c42578161267c565b5090919050565b600081831361495a578261267c565b600061267c8383670de0b6b3a7640000614cb2565b6000614c7b612e5e8361376f565b60008080526002602052600080516020615e998339815191525491925090614ca4908590615c76565b9050610f6685838387614960565b6000826000190484118302158202614cc957600080fd5b50910281810615159190040190565b600080670de0b6b3a7640000614cec61223e565b614cf69190615cb8565b9050808311614d06576000614d10565b614d108184615c63565b9150614957614d47670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000615cb8565b8390614521565b60008080614d5c8585614521565b90506000614d6d82868c8a8d6154f9565b90506000614da8614d86670de0b6b3a76400008a614521565b614d9e614d978b612bc78b8f612667565b8690612667565b612bc79085615c63565b9050614db4898c615c63565b614dbe8b83615c63565b945094505050505b965096945050505050565b600081831161495a578261267c565b600080614df1888888888888615527565b90925090508061362757604051637ac17d2560e01b815260040160405180910390fd5b60008080614e228585614521565b90506000614e3382868b8a8c6154f9565b90506000614e68614e4c670de0b6b3a76400008a614521565b612bc7614e61670de0b6b3a764000087615c76565b8590614521565b90506000614e768288614521565b9050614e828b82615c63565b614e8c838c615c63565b95509550505050509550959350505050565b600080614eab8484614521565b90506000614ebc82858b898c6154f9565b9050614ecc86612bc7898b615c63565b97506000614ef3614ee5670de0b6b3a76400008961484f565b612bc7856137698d87615c63565b9050614eff8186614521565b9050614f0b8a82615c63565b9a9950505050505050505050565b6000614557878787614f3388670de0b6b3a7640000615c63565b8787614de0565b6000808080614f5186670de0b6b3a7640000615c63565b9050614f868786611a418b612bd7867f0000000000000000000000000000000000000000000000000000000000000000612667565b9350614fb2847f0000000000000000000000000000000000000000000000000000000000000000612667565b91506000614fcb614b9b89670de0b6b3a7640000615c63565b9050614ff7817f0000000000000000000000000000000000000000000000000000000000000000612667565b9350615023847f0000000000000000000000000000000000000000000000000000000000000000612667565b61502d9084615c76565b925050509450945094915050565b6000808061505c6150548a670de0b6b3a7640000615c63565b8b9087612f5f565b9050881561509e5761506e8a8a612667565b915061508f8c8c846150888c670de0b6b3a7640000615c63565b8989614de0565b925061509b8382615c76565b90505b858711156150c1576150b1818789612f5f565b90506150be838789612f5f565b92505b99509950999650505050505050565b60606150df84846000856155c8565b949350505050565b6000806150f48484614521565b9050600061510582858b898c6154f9565b905061511f86612bc76151188a8d615c76565b8790612667565b985061512b828a612667565b9850600061514e615144670de0b6b3a76400008961484f565b612bc78c85615c63565b9050614f0b818a615c63565b60008082121561517d57604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e19821361538957506000919050565b680755bf798b4a1bf1e582126153b25760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60006155058284614864565b61551d61551685612bc78989612667565b8890612667565b613b3e9190615c76565b600080806155358585614521565b9050600061554682868c8a8d6154f9565b905061555687612bc78a8c615c76565b98508881101561556e57600080935093505050614dc6565b6000615593615585670de0b6b3a76400008a61484f565b612bc7856137698e87615c63565b905061559f8187614521565b9050808b11156155b6576155b3818c615c63565b94505b60019350505050965096945050505050565b6060824710156156295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610704565b600080866001600160a01b031685876040516156459190615e49565b60006040518083038185875af1925050503d8060008114615682576040519150601f19603f3d011682016040523d82523d6000602084013e615687565b606091505b509150915061455787838387606083156157025782516000036156fb576001600160a01b0385163b6156fb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610704565b50816150df565b6150df83838151156157175781518083602001fd5b8060405162461bcd60e51b81526004016107049190615e65565b8183823760009101908152919050565b805160208201516001600160e01b031980821692919060048310156157705780818460040360031b1b83161693505b505050919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156157a9578181015183820152602001615791565b50506000910152565b6000602082840312156157c457600080fd5b815167ffffffffffffffff808211156157dc57600080fd5b818401915084601f8301126157f057600080fd5b81518181111561580257615802615778565b604051601f8201601f19908116603f0116810190838211818310171561582a5761582a615778565b8160405282815287602084870101111561584357600080fd5b61455783602083016020880161578e565b6001600160a01b038116811461586957600080fd5b50565b60006020828403121561587e57600080fd5b813561267c81615854565b801515811461586957600080fd5b6000602082840312156158a957600080fd5b813561267c81615889565b600080600080608085870312156158ca57600080fd5b843593506020850135925060408501356158e381615854565b915060608501356158f381615889565b939692955090935050565b60008083601f84011261591057600080fd5b50813567ffffffffffffffff81111561592857600080fd5b6020830191508360208260051b850101111561223757600080fd5b6000806000806000806080878903121561595c57600080fd5b863561596781615854565b9550602087013561597781615854565b9450604087013567ffffffffffffffff8082111561599457600080fd5b6159a08a838b016158fe565b909650945060608901359150808211156159b957600080fd5b506159c689828a016158fe565b979a9699509497509295939492505050565b600080600080608085870312156159ee57600080fd5b843593506020850135615a0081615854565b92506040850135615a1081615854565b9396929550929360600135925050565b60008060008060808587031215615a3657600080fd5b843593506020850135615a4881615854565b92506040850135915060608501356158f381615854565b600080600080600060a08688031215615a7757600080fd5b8535945060208601359350604086013592506060860135615a9781615854565b91506080860135615aa781615889565b809150509295509295909350565b60008060408385031215615ac857600080fd5b8235615ad381615854565b91506020830135615ae381615889565b809150509250929050565b600080600080600080600060e0888a031215615b0957600080fd5b8735615b1481615854565b96506020880135615b2481615854565b95506040880135615b3481615889565b945060608801359350608088013560ff81168114615b5157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215615b8357600080fd5b833592506020840135615b9581615854565b929592945050506040919091013590565b600080600080600060a08688031215615bbe57600080fd5b853594506020860135615bd081615854565b93506040860135615be081615854565b9250606086013591506080860135615aa781615854565b600060208284031215615c0957600080fd5b5035919050565b600060208284031215615c2257600080fd5b5051919050565b6020808252600a90820152695245454e5452414e435960b01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561250857612508615c4d565b8082018082111561250857612508615c4d565b634e487b7160e01b600052603260045260246000fd5b600060018201615cb157615cb1615c4d565b5060010190565b808202811582820484141761250857612508615c4d565b6001600160801b03828116828216039080821115615cef57615cef615c4d565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615d1b57615d1b615cf6565b500690565b6001600160801b03818116838216019080821115615cef57615cef615c4d565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561250857612508615c4d565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561250857612508615c4d565b8181036000831280158383131683831282161715615cef57615cef615c4d565b6000600160ff1b8201615dcf57615dcf615c4d565b5060000390565b8082018281126000831280158216821582161715615df657615df6615c4d565b505092915050565b600060208284031215615e1057600080fd5b815161267c81615889565b600082615e2a57615e2a615cf6565b600160ff1b821460001984141615615e4457615e44615c4d565b500590565b60008251615e5b81846020870161578e565b9190910192915050565b6020815260008251806020840152615e8481604085016020870161578e565b601f01601f1916919091016040019291505056feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba26469706673582212207c318bd3db881019e9ab904f6ae42d2ef48425b79bbc85affdc2e39c77de2a8764736f6c63430008130033a2646970667358221220555fa7569a41e8c7f001ede5ffaf6a4c8f78fbf3c4ab28d4c6ebb89a76ca745e64736f6c63430008130033", + "sourceMap": "910:1538:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:795;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3987:32:158;;;3969:51;;3957:2;3942:18;1651:795:9;;;;;;;;1880:7;1959:29;2053:10;2037:26;;2222:7;2251:13;2286:15;2323:14;2359:4;2385:12;2179:236;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2133:306:9;1651:795;-1:-1:-1;;;;;;;1651:795:9:o;-1:-1:-1:-;;;;;;;;:::o;14:127:158:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;213:2;207:9;255:6;243:19;;292:18;277:34;;313:22;;;274:62;271:88;;;339:18;;:::i;:::-;375:2;368:22;146:250;:::o;401:181::-;477:20;;-1:-1:-1;;;;;526:31:158;;516:42;;506:70;;572:1;569;562:12;506:70;401:181;;;:::o;587:535::-;638:5;686:4;674:9;669:3;665:19;661:30;658:50;;;704:1;701;694:12;658:50;737:2;731:9;779:4;771:6;767:17;850:6;838:10;835:22;814:18;802:10;799:34;796:62;793:88;;;861:18;;:::i;:::-;901:10;897:2;890:22;;930:6;921:15;;973:9;960:23;952:6;945:39;1045:2;1034:9;1030:18;1017:32;1012:2;1004:6;1000:15;993:57;1111:2;1100:9;1096:18;1083:32;1078:2;1070:6;1066:15;1059:57;;587:535;;;;:::o;1127:902::-;1181:5;1234:3;1227:4;1219:6;1215:17;1211:27;1201:55;;1252:1;1249;1242:12;1201:55;1288:6;1275:20;1314:4;1337:18;1374:2;1370;1367:10;1364:36;;;1380:18;;:::i;:::-;1426:2;1423:1;1419:10;1458:2;1452:9;1521:2;1517:7;1512:2;1508;1504:11;1500:25;1492:6;1488:38;1576:6;1564:10;1561:22;1556:2;1544:10;1541:18;1538:46;1535:72;;;1587:18;;:::i;:::-;1623:2;1616:22;1673:18;;;1749:15;;;1745:24;;;1707:15;;;;-1:-1:-1;1781:15:158;;;1778:35;;;1809:1;1806;1799:12;1778:35;1845:2;1837:6;1833:15;1822:26;;1857:142;1873:6;1868:3;1865:15;1857:142;;;1939:17;;1927:30;;1977:12;;;;1890;;;;1857:142;;;2017:6;1127:902;-1:-1:-1;;;;;;;1127:902:158:o;2034:1675::-;2182:6;2190;2198;2206;2214;2258:9;2249:7;2245:23;2288:3;2284:2;2280:12;2277:32;;;2305:1;2302;2295:12;2277:32;2328:6;2354:2;2350;2346:11;2343:31;;;2370:1;2367;2360:12;2343:31;2396:17;;:::i;:::-;2383:30;;2436:37;2463:9;2436:37;:::i;:::-;2429:5;2422:52;2534:2;2523:9;2519:18;2506:32;2501:2;2494:5;2490:14;2483:56;2599:2;2588:9;2584:18;2571:32;2566:2;2559:5;2555:14;2548:56;2664:2;2653:9;2649:18;2636:32;2631:2;2624:5;2620:14;2613:56;2730:3;2719:9;2715:19;2702:33;2696:3;2689:5;2685:15;2678:58;2797:3;2786:9;2782:19;2769:33;2763:3;2756:5;2752:15;2745:58;2864:3;2853:9;2849:19;2836:33;2830:3;2823:5;2819:15;2812:58;2903:47;2945:3;2934:9;2930:19;2903:47;:::i;:::-;2897:3;2890:5;2886:15;2879:72;2970:3;3005:46;3047:2;3036:9;3032:18;3005:46;:::i;:::-;2989:14;;;2982:70;3071:3;3106:51;3149:7;3129:18;;;3106:51;:::i;:::-;3101:2;3094:5;3090:14;3083:75;;3222:6;3211:9;3207:22;3194:36;3185:6;3178:5;3174:18;3167:64;3295:3;3284:9;3280:19;3267:33;3258:6;3251:5;3247:18;3240:61;3320:5;3310:15;;3344:46;3386:2;3375:9;3371:18;3344:46;:::i;:::-;3334:56;;;;3437:3;3426:9;3422:19;3409:33;3399:43;;3461:47;3503:3;3492:9;3488:19;3461:47;:::i;:::-;3451:57;;3559:3;3548:9;3544:19;3531:33;3587:18;3579:6;3576:30;3573:50;;;3619:1;3616;3609:12;3573:50;3642:61;3695:7;3686:6;3675:9;3671:22;3642:61;:::i;:::-;3632:71;;;2034:1675;;;;;;;;:::o;4237:461::-;4290:3;4328:5;4322:12;4355:6;4350:3;4343:19;4381:4;4410:2;4405:3;4401:12;4394:19;;4447:2;4440:5;4436:14;4468:1;4478:195;4492:6;4489:1;4486:13;4478:195;;;4557:13;;-1:-1:-1;;;;;4553:39:158;4541:52;;4613:12;;;;4648:15;;;;4589:1;4507:9;4478:195;;;-1:-1:-1;4689:3:158;;4237:461;-1:-1:-1;;;;;4237:461:158:o;4703:1685::-;5118:13;;-1:-1:-1;;;;;3780:31:158;3768:44;;5058:4;5087:3;5199:4;5191:6;5187:17;5181:24;5174:4;5163:9;5159:20;5152:54;5262:4;5254:6;5250:17;5244:24;5237:4;5226:9;5222:20;5215:54;5325:4;5317:6;5313:17;5307:24;5300:4;5289:9;5285:20;5278:54;5388:4;5380:6;5376:17;5370:24;5363:4;5352:9;5348:20;5341:54;5451:4;5443:6;5439:17;5433:24;5426:4;5415:9;5411:20;5404:54;5514:4;5506:6;5502:17;5496:24;5489:4;5478:9;5474:20;5467:54;5568:4;5560:6;5556:17;5550:24;5583:54;5631:4;5620:9;5616:20;5602:12;-1:-1:-1;;;;;3780:31:158;3768:44;;3714:104;5583:54;-1:-1:-1;5656:6:158;5699:15;;;5693:22;-1:-1:-1;;;;;3780:31:158;;5759:18;;;3768:44;-1:-1:-1;;5797:6:158;5840:15;;;5834:22;4101:12;;5904:18;;;4089:25;4163:4;4152:16;;4146:23;4130:14;;;4123:47;4219:4;4208:16;;4202:23;4186:14;;;4179:47;-1:-1:-1;;5981:6:158;5969:19;;5963:26;5954:6;5939:22;;5932:58;6048:6;6036:19;;6030:26;6021:6;6006:22;;5999:58;-1:-1:-1;;;;;3780:31:158;;6108:3;6093:19;;3768:44;6150:6;6144:3;6133:9;6129:19;6122:35;6166:47;6208:3;6197:9;6193:19;6185:6;-1:-1:-1;;;;;3780:31:158;3768:44;;3714:104;6166:47;-1:-1:-1;;;;;3780:31:158;;6264:3;6249:19;;3768:44;6306:2;6300:3;6289:9;6285:19;6278:31;6326:56;6378:2;6367:9;6363:18;6355:6;6326:56;:::i;:::-;6318:64;4703:1685;-1:-1:-1;;;;;;;;;4703:1685:158:o", "linkReferences": {}, "immutableReferences": { - "4434": [ + "5011": [ { "start": 115, "length": 32 @@ -144,9 +149,9 @@ } }, "methodIdentifiers": { - "deploy((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": "76725f86" + "deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": "e3420f4f" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_dataProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"_extraData\",\"type\":\"bytes32[]\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"details\":\"We use two contracts to avoid any code size limit issues with Hyperdrive.\",\"kind\":\"dev\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"params\":{\"_config\":\"The configuration of the Hyperdrive pool.\",\"_dataProvider\":\"The address of the data provider.\",\"_extraData\":\"The extra data that contains the sweep targets.\",\"_linkerCodeHash\":\"The hash of the ERC20 linker contract's constructor code.\",\"_linkerFactory\":\"The address of the factory which is used to deploy the ERC20 linker contracts.\"},\"returns\":{\"_0\":\"The address of the newly deployed ERC4626Hyperdrive Instance\"}}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"notice\":\"Deploys a copy of hyperdrive with the given params.\"}},\"notice\":\"This is a minimal factory which contains only the logic to deploy hyperdrive and is called by a more complex factory which initializes the Hyperdrive instances and acts as a registry.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":\"ERC4626HyperdriveDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/DataProvider.sol\":{\"keccak256\":\"0xd23ffd6ff77b03ea16b61130fdfcda6d2bfa430576241003f89b35cd76f51e30\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cc1ab2f99af4241f81feeeda6514fd30f11997adafddcdb48bebd2b383aae212\",\"dweb:/ipfs/QmSPp2B1Pka73Ur1KQMybMs3u73VUrDhev5w6U9iGLTmw7\"]},\"contracts/src/Hyperdrive.sol\":{\"keccak256\":\"0x7b743650479e0786657766b2a2aaa4718b3fbd11bc90cb3cfcbb4fa64ba51833\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://47f4e4aeb022662b6b6e9cf1df85da5a1e120108716120427e0786728238db09\",\"dweb:/ipfs/QmNjpsCM6GF3iJ8pNMwaJiDXrxqH5pnVB6d1FJuvTsNPt1\"]},\"contracts/src/HyperdriveBase.sol\":{\"keccak256\":\"0xd9ef97c31b6ed6f9014dd06b198784fcd899e904bc231375c7ab1c9552cc1338\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://051791e9942ceb15999d06c71893adf135e910dbd8cc71d68af3718d4baf73b3\",\"dweb:/ipfs/QmawqDB49Sk1szGFzKBwsurHrqxEYJpqiz9gPGj1DVMMye\"]},\"contracts/src/HyperdriveLP.sol\":{\"keccak256\":\"0x976a463d9c2892a610823403fd249e1b8e5a9f6a7242eb85893206fda92762a5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://356c94d16193490b8c17c122a7597726c4f07ad0a015698ea6094ed40bbe5620\",\"dweb:/ipfs/Qme6wEod5MKDjcuQ3LD17aiWRzHNaUkKwc286EqZQLd97k\"]},\"contracts/src/HyperdriveLong.sol\":{\"keccak256\":\"0x75c322faf3fcdcb8c64c825b5903875db779e040b902acfa942af3471d771143\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://697f3c139944d70e7b7505c5ed64b3c68e1f08cccd68da021f189e36bff5f8ac\",\"dweb:/ipfs/Qmd86oRA27HCxeuJC2ZkN39sY6QwkmcX599z61bQXyrjV2\"]},\"contracts/src/HyperdriveShort.sol\":{\"keccak256\":\"0x67cb8b69af749e3afd3db929c54d50a6608e75ce2b1ce8650e15f5d542d7e122\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f87f7eded340da50c38130aec2c9cc3e8ed0ac577ec13725c07ec5de11adf948\",\"dweb:/ipfs/QmNtswqVEkCmzGF6emuj7zhCHdKe2aLoT3nDNpsGQtFmnJ\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xa1fb3fc7e0597c8ccd305df5f18bb04166260ea908e73ff359ee959bd6cbc67d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1dc0bf841efa3f67efd1d15bb83842e06fd96c1a974003a4da0313a209faa0f\",\"dweb:/ipfs/QmXui8LB765fu91nKBNeVgRQnCrYPpXMpxD3hapojQWRoY\"]},\"contracts/src/HyperdriveTWAP.sol\":{\"keccak256\":\"0x76cba088948ab50bb4956377235b302b28ef7c9f6cc68bda73211d66df41e92b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://74e1b28c8cd08aa9adf3b3f31f0379c095299cd2b9de3d3595d7d55b0e0697cc\",\"dweb:/ipfs/QmTTnkPF3jUmdfynnJK6kUBTYSBZFWJs69A9e9tPQzqiac\"]},\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":{\"keccak256\":\"0x8f79742098b3809d050204f18f887f9a1c38eaa8a2fc8d1949f4ab741041619c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f6916922776e2cf110646eea4a728a802437b46596aeaaa9888e6d736fe1e4f1\",\"dweb:/ipfs/Qma9U1kEYdQz6WDBYdiMH2gJ7AnX8xfBUB8XfLqJ2ztX1p\"]},\"contracts/src/instances/ERC4626Hyperdrive.sol\":{\"keccak256\":\"0xee0cdfed80801cd31d14173548d63bf514ba1b5618504b607db4a9acf41c31f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53234be5f647cef80eec3461170cc8271119d9d5019f65860e23fb5e4a5247d4\",\"dweb:/ipfs/QmXJM27Nf5NNfTayerGiv5C59u7gw5bW1VZ6gXyugzdxmk\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e\",\"dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386\",\"dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166\",\"dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x197ef70f77f1af87da7ef0a5ae59f8e3fd53689e5ff6c844781c0fafa9ea7427\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4404f2e8c63a5233e98e8baa6c7f472aa65eace1d7646de0e23344ffebee334c\",\"dweb:/ipfs/QmeFyFXEgRHYpQ6QSZQQAkR2oXVRQy3CnXL3vgaWLYxwYR\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x6c068ea7e60a4d8476d6392ee3e98e937488de453f090ca935ca2c05c76a5db6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a41fa6fe454088e2de3432bf8c9202d9634a35beebe8a2f9cb310ba136da2105\",\"dweb:/ipfs/QmYeAhiDFctvKxSq1QyTPdguBuQ4ymPCi3u3e5GYnyFktd\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0xe684cd0266697593297259a96fed5bee6707ad3536656807b3ec7fd3a10a93e9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6573b218ffc8a7ea8baac98c199ab6af2c1fcd8fed45ecbfacc4493fac3d43c1\",\"dweb:/ipfs/Qmf7DGkwkaj7vfitjW2JxFQAMeyEyzG7GKsbsonk9RcJnj\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x350df353a678986be24d5ec6dc1813c47955d8f031c67ac40a013e15813a23d3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5e38775f506441bfe2050fcfe852900d59265a5c66b48d8a690dd5f62ae11c41\",\"dweb:/ipfs/QmfVV4usqBco3N9RwNPmZ2RnTzc65j3pVNPzxsY9Th4B1c\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0x07c62c69c7913bb0a3defdf2e1570047f47a2a870d2e5a0b71637e92751180bb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bb0610e1d5d54991ef96ce495a594dad1c9cf4d64e4f93ebce87752d349a2d01\",\"dweb:/ipfs/QmSbADniYagQV4BArPTLfZQkc9VGnFxFt2FEZQcezuCzxK\"]},\"contracts/src/token/MultiToken.sol\":{\"keccak256\":\"0x9bf47cd9150ca73b0e4a6e6f29cf865643f1056cf706fe02480eeb4d50a0306e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://562f861c19dfe883c1b55e751f0eab2e16eecb31eb62c117baf19ad21bf2baf3\",\"dweb:/ipfs/QmVacZ9B7suz4cugYsCrkBpSUHUR3KFapaFFGtF2pQVFyQ\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_dataProvider\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"_extraData\",\"type\":\"bytes32[]\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"details\":\"We use two contracts to avoid any code size limit issues with Hyperdrive.\",\"kind\":\"dev\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"params\":{\"_config\":\"The configuration of the Hyperdrive pool.\",\"_dataProvider\":\"The address of the data provider.\",\"_extraData\":\"The extra data that contains the sweep targets.\",\"_linkerCodeHash\":\"The hash of the ERC20 linker contract's constructor code.\",\"_linkerFactory\":\"The address of the factory which is used to deploy the ERC20 linker contracts.\"},\"returns\":{\"_0\":\"The address of the newly deployed ERC4626Hyperdrive Instance\"}}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])\":{\"notice\":\"Deploys a copy of hyperdrive with the given params.\"}},\"notice\":\"This is a minimal factory which contains only the logic to deploy hyperdrive and is called by a more complex factory which initializes the Hyperdrive instances and acts as a registry.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":\"ERC4626HyperdriveDeployer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/DataProvider.sol\":{\"keccak256\":\"0xd23ffd6ff77b03ea16b61130fdfcda6d2bfa430576241003f89b35cd76f51e30\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cc1ab2f99af4241f81feeeda6514fd30f11997adafddcdb48bebd2b383aae212\",\"dweb:/ipfs/QmSPp2B1Pka73Ur1KQMybMs3u73VUrDhev5w6U9iGLTmw7\"]},\"contracts/src/Hyperdrive.sol\":{\"keccak256\":\"0x99ef8d727ec973ba059c633a807a6091b3a5ece776af926991efa7f109bc29a6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8dd768ee2adf393365e57037360aa8ad2335e89e8cb43d32538b07d2e2e2b715\",\"dweb:/ipfs/QmP4UGHPJJ3f37LczazwsPgDbmZK6FgcQGQqvgzJh6jFi3\"]},\"contracts/src/HyperdriveBase.sol\":{\"keccak256\":\"0x4970583c00cb693380f4c7e8812317041b7331985a3123cf0534828213833079\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fcead6d99cac0df54d0d9c5f455c7317c7cfa73d76b9efdf39c63bd0176a5340\",\"dweb:/ipfs/QmYmP25NuQmzX6stuMVvp5mg8VWEKsJazKBJXEoE1KYefc\"]},\"contracts/src/HyperdriveLP.sol\":{\"keccak256\":\"0xe2f37ecc51c9eba59c4b5c13549ed4cdc0415d8af1902442d52ed012e4b9c22a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53efc435c55fa29822d5ae3271cc42bf4ae096e4dfc9fb150a410f39cd43651e\",\"dweb:/ipfs/QmQgRowy4YqCsxV9A9mFyxzGF7FigC4Huc66Cxy8YfeYAv\"]},\"contracts/src/HyperdriveLong.sol\":{\"keccak256\":\"0x860254632b91bfab6524d8919c9002d131b7fdb6b3cb02deda52d1adcae9cd93\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6fb9ad4e0e61f58cae4e1c4017377b9abec197d2ee9583c567ab2a06cc71164e\",\"dweb:/ipfs/QmUhZNqN1wzLeQo3wF3sCdgQcBDnfdBKutThhyK7mNpvYm\"]},\"contracts/src/HyperdriveShort.sol\":{\"keccak256\":\"0x61b824a756f8dc1c8b94371244ab52aca37ad88bc948ca4fde0db44ec67b45e9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73ff71faa43166372212350d300a83da76aaf2ac6f4a20378780b3c7bcd74e3d\",\"dweb:/ipfs/QmYJwMwxcJv7ef7EvaAqWVnWU2C74UxW9UPXYXK9PAiZbE\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a\",\"dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY\"]},\"contracts/src/HyperdriveTWAP.sol\":{\"keccak256\":\"0x76cba088948ab50bb4956377235b302b28ef7c9f6cc68bda73211d66df41e92b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://74e1b28c8cd08aa9adf3b3f31f0379c095299cd2b9de3d3595d7d55b0e0697cc\",\"dweb:/ipfs/QmTTnkPF3jUmdfynnJK6kUBTYSBZFWJs69A9e9tPQzqiac\"]},\"contracts/src/factory/ERC4626HyperdriveDeployer.sol\":{\"keccak256\":\"0x8f79742098b3809d050204f18f887f9a1c38eaa8a2fc8d1949f4ab741041619c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f6916922776e2cf110646eea4a728a802437b46596aeaaa9888e6d736fe1e4f1\",\"dweb:/ipfs/Qma9U1kEYdQz6WDBYdiMH2gJ7AnX8xfBUB8XfLqJ2ztX1p\"]},\"contracts/src/instances/ERC4626Hyperdrive.sol\":{\"keccak256\":\"0xee0cdfed80801cd31d14173548d63bf514ba1b5618504b607db4a9acf41c31f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://53234be5f647cef80eec3461170cc8271119d9d5019f65860e23fb5e4a5247d4\",\"dweb:/ipfs/QmXJM27Nf5NNfTayerGiv5C59u7gw5bW1VZ6gXyugzdxmk\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff\",\"dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5\",\"dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x197ef70f77f1af87da7ef0a5ae59f8e3fd53689e5ff6c844781c0fafa9ea7427\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4404f2e8c63a5233e98e8baa6c7f472aa65eace1d7646de0e23344ffebee334c\",\"dweb:/ipfs/QmeFyFXEgRHYpQ6QSZQQAkR2oXVRQy3CnXL3vgaWLYxwYR\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x7201face24c251bff410396e8c0591373c1d4da1b86ef3758e145de52c52919e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1a4c4306b3b99fe350078e31d98ed1cc74e72d9238ee9ee13be93c3048d0f8f\",\"dweb:/ipfs/QmYyPwjUmt7M1QsUbfwsnvV6saYKQVRYFTMM7AE3NKArRy\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0xe8ed95815861cb8c77dfc6ac177bc426131957097fe6c2078d1a727024341884\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://71da9674ca5562611cda2fd905cb9d7b134e85778d5fc210bfabc05f20c15182\",\"dweb:/ipfs/QmUnR27GseanPti6GtNdhPojsrBEpq688We7A8e6td1H6b\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x4c11749b6a90f9a29f5fa32befa048cfc9da8b02d3099d35e74ebf4d65fb8923\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://f68984e9304312a8bf6b1046a9a2d5eb44add6b774d117b9de698bad09cbb7c2\",\"dweb:/ipfs/QmRgZQgcBF4pyXA7VgMAba5VABr7ii9yVBMxMufHijXjfk\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0xfbadd1a098daabff3db492f68050fa7eb992891aa42406bd80fb18f72121b36c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://79bd9ad56f8bceffdcc0238efe29bee81c1af6329e294fb64931e1623e818c97\",\"dweb:/ipfs/QmNXHAZ1UjuisMSYA5aicjUk8v5Q1mnv2SMYPLW9gGaGnz\"]},\"contracts/src/token/MultiToken.sol\":{\"keccak256\":\"0x9bf47cd9150ca73b0e4a6e6f29cf865643f1056cf706fe02480eeb4d50a0306e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://562f861c19dfe883c1b55e751f0eab2e16eecb31eb62c117baf19ad21bf2baf3\",\"dweb:/ipfs/QmVacZ9B7suz4cugYsCrkBpSUHUR3KFapaFFGtF2pQVFyQ\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -187,6 +192,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -282,7 +292,7 @@ "devdoc": { "kind": "dev", "methods": { - "deploy((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": { + "deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": { "params": { "_config": "The configuration of the Hyperdrive pool.", "_dataProvider": "The address of the data provider.", @@ -300,7 +310,7 @@ "userdoc": { "kind": "user", "methods": { - "deploy((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": { + "deploy((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,address,bytes32[])": { "notice": "Deploys a copy of hyperdrive with the given params." } }, @@ -309,16 +319,16 @@ }, "settings": { "remappings": [ - ":@aave/=lib/aave-v3-core/contracts/", - ":aave-v3-core/=lib/aave-v3-core/", - ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/", - ":yield-daddy/=lib/yield-daddy/" + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/" ], "optimizer": { "enabled": true, @@ -342,50 +352,50 @@ "license": "Apache-2.0" }, "contracts/src/Hyperdrive.sol": { - "keccak256": "0x7b743650479e0786657766b2a2aaa4718b3fbd11bc90cb3cfcbb4fa64ba51833", + "keccak256": "0x99ef8d727ec973ba059c633a807a6091b3a5ece776af926991efa7f109bc29a6", "urls": [ - "bzz-raw://47f4e4aeb022662b6b6e9cf1df85da5a1e120108716120427e0786728238db09", - "dweb:/ipfs/QmNjpsCM6GF3iJ8pNMwaJiDXrxqH5pnVB6d1FJuvTsNPt1" + "bzz-raw://8dd768ee2adf393365e57037360aa8ad2335e89e8cb43d32538b07d2e2e2b715", + "dweb:/ipfs/QmP4UGHPJJ3f37LczazwsPgDbmZK6FgcQGQqvgzJh6jFi3" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveBase.sol": { - "keccak256": "0xd9ef97c31b6ed6f9014dd06b198784fcd899e904bc231375c7ab1c9552cc1338", + "keccak256": "0x4970583c00cb693380f4c7e8812317041b7331985a3123cf0534828213833079", "urls": [ - "bzz-raw://051791e9942ceb15999d06c71893adf135e910dbd8cc71d68af3718d4baf73b3", - "dweb:/ipfs/QmawqDB49Sk1szGFzKBwsurHrqxEYJpqiz9gPGj1DVMMye" + "bzz-raw://fcead6d99cac0df54d0d9c5f455c7317c7cfa73d76b9efdf39c63bd0176a5340", + "dweb:/ipfs/QmYmP25NuQmzX6stuMVvp5mg8VWEKsJazKBJXEoE1KYefc" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveLP.sol": { - "keccak256": "0x976a463d9c2892a610823403fd249e1b8e5a9f6a7242eb85893206fda92762a5", + "keccak256": "0xe2f37ecc51c9eba59c4b5c13549ed4cdc0415d8af1902442d52ed012e4b9c22a", "urls": [ - "bzz-raw://356c94d16193490b8c17c122a7597726c4f07ad0a015698ea6094ed40bbe5620", - "dweb:/ipfs/Qme6wEod5MKDjcuQ3LD17aiWRzHNaUkKwc286EqZQLd97k" + "bzz-raw://53efc435c55fa29822d5ae3271cc42bf4ae096e4dfc9fb150a410f39cd43651e", + "dweb:/ipfs/QmQgRowy4YqCsxV9A9mFyxzGF7FigC4Huc66Cxy8YfeYAv" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveLong.sol": { - "keccak256": "0x75c322faf3fcdcb8c64c825b5903875db779e040b902acfa942af3471d771143", + "keccak256": "0x860254632b91bfab6524d8919c9002d131b7fdb6b3cb02deda52d1adcae9cd93", "urls": [ - "bzz-raw://697f3c139944d70e7b7505c5ed64b3c68e1f08cccd68da021f189e36bff5f8ac", - "dweb:/ipfs/Qmd86oRA27HCxeuJC2ZkN39sY6QwkmcX599z61bQXyrjV2" + "bzz-raw://6fb9ad4e0e61f58cae4e1c4017377b9abec197d2ee9583c567ab2a06cc71164e", + "dweb:/ipfs/QmUhZNqN1wzLeQo3wF3sCdgQcBDnfdBKutThhyK7mNpvYm" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveShort.sol": { - "keccak256": "0x67cb8b69af749e3afd3db929c54d50a6608e75ce2b1ce8650e15f5d542d7e122", + "keccak256": "0x61b824a756f8dc1c8b94371244ab52aca37ad88bc948ca4fde0db44ec67b45e9", "urls": [ - "bzz-raw://f87f7eded340da50c38130aec2c9cc3e8ed0ac577ec13725c07ec5de11adf948", - "dweb:/ipfs/QmNtswqVEkCmzGF6emuj7zhCHdKe2aLoT3nDNpsGQtFmnJ" + "bzz-raw://73ff71faa43166372212350d300a83da76aaf2ac6f4a20378780b3c7bcd74e3d", + "dweb:/ipfs/QmYJwMwxcJv7ef7EvaAqWVnWU2C74UxW9UPXYXK9PAiZbE" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveStorage.sol": { - "keccak256": "0xa1fb3fc7e0597c8ccd305df5f18bb04166260ea908e73ff359ee959bd6cbc67d", + "keccak256": "0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc", "urls": [ - "bzz-raw://a1dc0bf841efa3f67efd1d15bb83842e06fd96c1a974003a4da0313a209faa0f", - "dweb:/ipfs/QmXui8LB765fu91nKBNeVgRQnCrYPpXMpxD3hapojQWRoY" + "bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a", + "dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY" ], "license": "Apache-2.0" }, @@ -430,10 +440,10 @@ "license": "GPL-2.0-or-later" }, "contracts/src/interfaces/IHyperdrive.sol": { - "keccak256": "0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e", + "keccak256": "0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284", "urls": [ - "bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e", - "dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ" + "bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff", + "dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp" ], "license": "Apache-2.0" }, @@ -446,18 +456,18 @@ "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveRead.sol": { - "keccak256": "0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110", + "keccak256": "0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3", "urls": [ - "bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386", - "dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F" + "bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993", + "dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt" ], "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveWrite.sol": { - "keccak256": "0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615", + "keccak256": "0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16", "urls": [ - "bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166", - "dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG" + "bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5", + "dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx" ], "license": "Apache-2.0" }, @@ -502,34 +512,34 @@ "license": "Apache-2.0" }, "contracts/src/libraries/FixedPointMath.sol": { - "keccak256": "0x6c068ea7e60a4d8476d6392ee3e98e937488de453f090ca935ca2c05c76a5db6", + "keccak256": "0x7201face24c251bff410396e8c0591373c1d4da1b86ef3758e145de52c52919e", "urls": [ - "bzz-raw://a41fa6fe454088e2de3432bf8c9202d9634a35beebe8a2f9cb310ba136da2105", - "dweb:/ipfs/QmYeAhiDFctvKxSq1QyTPdguBuQ4ymPCi3u3e5GYnyFktd" + "bzz-raw://d1a4c4306b3b99fe350078e31d98ed1cc74e72d9238ee9ee13be93c3048d0f8f", + "dweb:/ipfs/QmYyPwjUmt7M1QsUbfwsnvV6saYKQVRYFTMM7AE3NKArRy" ], "license": "Apache-2.0" }, "contracts/src/libraries/HyperdriveMath.sol": { - "keccak256": "0xe684cd0266697593297259a96fed5bee6707ad3536656807b3ec7fd3a10a93e9", + "keccak256": "0xe8ed95815861cb8c77dfc6ac177bc426131957097fe6c2078d1a727024341884", "urls": [ - "bzz-raw://6573b218ffc8a7ea8baac98c199ab6af2c1fcd8fed45ecbfacc4493fac3d43c1", - "dweb:/ipfs/Qmf7DGkwkaj7vfitjW2JxFQAMeyEyzG7GKsbsonk9RcJnj" + "bzz-raw://71da9674ca5562611cda2fd905cb9d7b134e85778d5fc210bfabc05f20c15182", + "dweb:/ipfs/QmUnR27GseanPti6GtNdhPojsrBEpq688We7A8e6td1H6b" ], "license": "Apache-2.0" }, "contracts/src/libraries/SafeCast.sol": { - "keccak256": "0x350df353a678986be24d5ec6dc1813c47955d8f031c67ac40a013e15813a23d3", + "keccak256": "0x4c11749b6a90f9a29f5fa32befa048cfc9da8b02d3099d35e74ebf4d65fb8923", "urls": [ - "bzz-raw://5e38775f506441bfe2050fcfe852900d59265a5c66b48d8a690dd5f62ae11c41", - "dweb:/ipfs/QmfVV4usqBco3N9RwNPmZ2RnTzc65j3pVNPzxsY9Th4B1c" + "bzz-raw://f68984e9304312a8bf6b1046a9a2d5eb44add6b774d117b9de698bad09cbb7c2", + "dweb:/ipfs/QmRgZQgcBF4pyXA7VgMAba5VABr7ii9yVBMxMufHijXjfk" ], "license": "AGPL-3.0-only" }, "contracts/src/libraries/YieldSpaceMath.sol": { - "keccak256": "0x07c62c69c7913bb0a3defdf2e1570047f47a2a870d2e5a0b71637e92751180bb", + "keccak256": "0xfbadd1a098daabff3db492f68050fa7eb992891aa42406bd80fb18f72121b36c", "urls": [ - "bzz-raw://bb0610e1d5d54991ef96ce495a594dad1c9cf4d64e4f93ebce87752d349a2d01", - "dweb:/ipfs/QmSbADniYagQV4BArPTLfZQkc9VGnFxFt2FEZQcezuCzxK" + "bzz-raw://79bd9ad56f8bceffdcc0238efe29bee81c1af6329e294fb64931e1623e818c97", + "dweb:/ipfs/QmNXHAZ1UjuisMSYA5aicjUk8v5Q1mnv2SMYPLW9gGaGnz" ], "license": "Apache-2.0" }, @@ -594,29 +604,29 @@ }, "ast": { "absolutePath": "contracts/src/factory/ERC4626HyperdriveDeployer.sol", - "id": 4489, + "id": 5066, "exportedSymbols": { "ERC4626Hyperdrive": [ - 5756 + 6333 ], "ERC4626HyperdriveDeployer": [ - 4488 + 5065 ], "IERC4626": [ - 6060 + 6578 ], "IHyperdrive": [ - 6429 + 6959 ], "IHyperdriveDeployer": [ - 6453 + 6983 ] }, "nodeType": "SourceUnit", "src": "39:2410:9", "nodes": [ { - "id": 4420, + "id": 4997, "nodeType": "PragmaDirective", "src": "39:23:9", "nodes": [], @@ -627,23 +637,23 @@ ] }, { - "id": 4422, + "id": 4999, "nodeType": "ImportDirective", "src": "64:71:9", "nodes": [], "absolutePath": "contracts/src/instances/ERC4626Hyperdrive.sol", "file": "../instances/ERC4626Hyperdrive.sol", "nameLocation": "-1:-1:-1", - "scope": 4489, - "sourceUnit": 5757, + "scope": 5066, + "sourceUnit": 6334, "symbolAliases": [ { "foreign": { - "id": 4421, + "id": 4998, "name": "ERC4626Hyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5756, + "referencedDeclaration": 6333, "src": "73:17:9", "typeDescriptions": {} }, @@ -653,23 +663,23 @@ "unitAlias": "" }, { - "id": 4424, + "id": 5001, "nodeType": "ImportDirective", "src": "136:54:9", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC4626.sol", "file": "../interfaces/IERC4626.sol", "nameLocation": "-1:-1:-1", - "scope": 4489, - "sourceUnit": 6061, + "scope": 5066, + "sourceUnit": 6579, "symbolAliases": [ { "foreign": { - "id": 4423, + "id": 5000, "name": "IERC4626", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "145:8:9", "typeDescriptions": {} }, @@ -679,23 +689,23 @@ "unitAlias": "" }, { - "id": 4426, + "id": 5003, "nodeType": "ImportDirective", "src": "191:60:9", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", "file": "../interfaces/IHyperdrive.sol", "nameLocation": "-1:-1:-1", - "scope": 4489, - "sourceUnit": 6430, + "scope": 5066, + "sourceUnit": 6960, "symbolAliases": [ { "foreign": { - "id": 4425, + "id": 5002, "name": "IHyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6429, + "referencedDeclaration": 6959, "src": "200:11:9", "typeDescriptions": {} }, @@ -705,23 +715,23 @@ "unitAlias": "" }, { - "id": 4428, + "id": 5005, "nodeType": "ImportDirective", "src": "252:76:9", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveDeployer.sol", "file": "../interfaces/IHyperdriveDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 4489, - "sourceUnit": 6454, + "scope": 5066, + "sourceUnit": 6984, "symbolAliases": [ { "foreign": { - "id": 4427, + "id": 5004, "name": "IHyperdriveDeployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6453, + "referencedDeclaration": 6983, "src": "261:19:9", "typeDescriptions": {} }, @@ -731,12 +741,12 @@ "unitAlias": "" }, { - "id": 4488, + "id": 5065, "nodeType": "ContractDefinition", "src": "910:1538:9", "nodes": [ { - "id": 4434, + "id": 5011, "nodeType": "VariableDeclaration", "src": "974:32:9", "nodes": [], @@ -744,86 +754,86 @@ "mutability": "immutable", "name": "pool", "nameLocation": "1002:4:9", - "scope": 4488, + "scope": 5065, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" }, "typeName": { - "id": 4433, + "id": 5010, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4432, + "id": 5009, "name": "IERC4626", "nameLocations": [ "974:8:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "974:8:9" }, - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "974:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, "visibility": "internal" }, { - "id": 4445, + "id": 5022, "nodeType": "FunctionDefinition", "src": "1013:57:9", "nodes": [], "body": { - "id": 4444, + "id": 5021, "nodeType": "Block", "src": "1041:29:9", "nodes": [], "statements": [ { "expression": { - "id": 4442, + "id": 5019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4440, + "id": 5017, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4434, + "referencedDeclaration": 5011, "src": "1051:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 4441, + "id": 5018, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4437, + "referencedDeclaration": 5014, "src": "1058:5:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, "src": "1051:12:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, - "id": 4443, + "id": 5020, "nodeType": "ExpressionStatement", "src": "1051:12:9" } @@ -835,41 +845,41 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 4438, + "id": 5015, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4437, + "id": 5014, "mutability": "mutable", "name": "_pool", "nameLocation": "1034:5:9", "nodeType": "VariableDeclaration", - "scope": 4445, + "scope": 5022, "src": "1025:14:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" }, "typeName": { - "id": 4436, + "id": 5013, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4435, + "id": 5012, "name": "IERC4626", "nameLocations": [ "1025:8:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "1025:8:9" }, - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "1025:8:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, @@ -879,40 +889,40 @@ "src": "1024:16:9" }, "returnParameters": { - "id": 4439, + "id": 5016, "nodeType": "ParameterList", "parameters": [], "src": "1041:0:9" }, - "scope": 4488, + "scope": 5065, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 4487, + "id": 5064, "nodeType": "FunctionDefinition", "src": "1651:795:9", "nodes": [], "body": { - "id": 4486, + "id": 5063, "nodeType": "Block", "src": "1889:557:9", "nodes": [], "statements": [ { "assignments": [ - 4468 + 5045 ], "declarations": [ { "constant": false, - "id": 4468, + "id": 5045, "mutability": "mutable", "name": "sweepTargets", "nameLocation": "1976:12:9", "nodeType": "VariableDeclaration", - "scope": 4486, + "scope": 5063, "src": "1959:29:9", "stateVariable": false, "storageLocation": "memory", @@ -922,7 +932,7 @@ }, "typeName": { "baseType": { - "id": 4466, + "id": 5043, "name": "address", "nodeType": "ElementaryTypeName", "src": "1959:7:9", @@ -931,7 +941,7 @@ "typeString": "address" } }, - "id": 4467, + "id": 5044, "nodeType": "ArrayTypeName", "src": "1959:9:9", "typeDescriptions": { @@ -942,7 +952,7 @@ "visibility": "internal" } ], - "id": 4469, + "id": 5046, "nodeType": "VariableDeclarationStatement", "src": "1959:29:9" }, @@ -972,14 +982,14 @@ "evmVersion": "paris", "externalReferences": [ { - "declaration": 4458, + "declaration": 5035, "isOffset": false, "isSlot": false, "src": "2053:10:9", "valueSize": 1 }, { - "declaration": 4468, + "declaration": 5045, "isOffset": false, "isSlot": false, "src": "2037:12:9", @@ -989,7 +999,7 @@ "flags": [ "memory-safe" ], - "id": 4470, + "id": 5047, "nodeType": "InlineAssembly", "src": "1998:75:9" }, @@ -1001,23 +1011,23 @@ { "arguments": [ { - "id": 4476, + "id": 5053, "name": "_config", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4449, + "referencedDeclaration": 5026, "src": "2222:7:9", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" } }, { - "id": 4477, + "id": 5054, "name": "_dataProvider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4451, + "referencedDeclaration": 5028, "src": "2251:13:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1025,11 +1035,11 @@ } }, { - "id": 4478, + "id": 5055, "name": "_linkerCodeHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4453, + "referencedDeclaration": 5030, "src": "2286:15:9", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1037,11 +1047,11 @@ } }, { - "id": 4479, + "id": 5056, "name": "_linkerFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4455, + "referencedDeclaration": 5032, "src": "2323:14:9", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1049,23 +1059,23 @@ } }, { - "id": 4480, + "id": 5057, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4434, + "referencedDeclaration": 5011, "src": "2359:4:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, { - "id": 4481, + "id": 5058, "name": "sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4468, + "referencedDeclaration": 5045, "src": "2385:12:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -1076,7 +1086,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" }, { @@ -1092,7 +1102,7 @@ "typeString": "address" }, { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" }, { @@ -1100,7 +1110,7 @@ "typeString": "address[] memory" } ], - "id": 4475, + "id": 5052, "isConstant": false, "isLValue": false, "isPure": false, @@ -1108,31 +1118,31 @@ "nodeType": "NewExpression", "src": "2179:21:9", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6268_memory_ptr_$_t_address_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6060_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_contract$_ERC4626Hyperdrive_$5756_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6792_memory_ptr_$_t_address_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6578_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_contract$_ERC4626Hyperdrive_$6333_$", "typeString": "function (struct IHyperdrive.PoolConfig memory,address,bytes32,address,contract IERC4626,address[] memory) returns (contract ERC4626Hyperdrive)" }, "typeName": { - "id": 4474, + "id": 5051, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4473, + "id": 5050, "name": "ERC4626Hyperdrive", "nameLocations": [ "2183:17:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5756, + "referencedDeclaration": 6333, "src": "2183:17:9" }, - "referencedDeclaration": 5756, + "referencedDeclaration": 6333, "src": "2183:17:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$5756", + "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6333", "typeString": "contract ERC4626Hyperdrive" } } }, - "id": 4482, + "id": 5059, "isConstant": false, "isLValue": false, "isPure": false, @@ -1144,7 +1154,7 @@ "src": "2179:236:9", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$5756", + "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6333", "typeString": "contract ERC4626Hyperdrive" } } @@ -1152,11 +1162,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$5756", + "typeIdentifier": "t_contract$_ERC4626Hyperdrive_$6333", "typeString": "contract ERC4626Hyperdrive" } ], - "id": 4472, + "id": 5049, "isConstant": false, "isLValue": false, "isPure": true, @@ -1168,14 +1178,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 4471, + "id": 5048, "name": "address", "nodeType": "ElementaryTypeName", "src": "2154:7:9", "typeDescriptions": {} } }, - "id": 4483, + "id": 5060, "isConstant": false, "isLValue": false, "isPure": false, @@ -1192,7 +1202,7 @@ } } ], - "id": 4484, + "id": 5061, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -1205,71 +1215,71 @@ "typeString": "address" } }, - "functionReturnParameters": 4463, - "id": 4485, + "functionReturnParameters": 5040, + "id": 5062, "nodeType": "Return", "src": "2133:306:9" } ] }, "baseFunctions": [ - 6452 + 6982 ], "documentation": { - "id": 4446, + "id": 5023, "nodeType": "StructuredDocumentation", "src": "1076:570:9", "text": "@notice Deploys a copy of hyperdrive with the given params.\n @param _config The configuration of the Hyperdrive pool.\n @param _dataProvider The address of the data provider.\n @param _extraData The extra data that contains the sweep targets.\n @param _linkerCodeHash The hash of the ERC20 linker contract's\n constructor code.\n @param _linkerFactory The address of the factory which is used to deploy\n the ERC20 linker contracts.\n @return The address of the newly deployed ERC4626Hyperdrive Instance" }, - "functionSelector": "76725f86", + "functionSelector": "e3420f4f", "implemented": true, "kind": "function", "modifiers": [], "name": "deploy", "nameLocation": "1660:6:9", "overrides": { - "id": 4460, + "id": 5037, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1862:8:9" }, "parameters": { - "id": 4459, + "id": 5036, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4449, + "id": 5026, "mutability": "mutable", "name": "_config", "nameLocation": "1706:7:9", "nodeType": "VariableDeclaration", - "scope": 4487, + "scope": 5064, "src": "1676:37:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig" }, "typeName": { - "id": 4448, + "id": 5025, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4447, + "id": 5024, "name": "IHyperdrive.PoolConfig", "nameLocations": [ "1676:11:9", "1688:10:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6268, + "referencedDeclaration": 6792, "src": "1676:22:9" }, - "referencedDeclaration": 6268, + "referencedDeclaration": 6792, "src": "1676:22:9", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_storage_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_storage_ptr", "typeString": "struct IHyperdrive.PoolConfig" } }, @@ -1277,12 +1287,12 @@ }, { "constant": false, - "id": 4451, + "id": 5028, "mutability": "mutable", "name": "_dataProvider", "nameLocation": "1731:13:9", "nodeType": "VariableDeclaration", - "scope": 4487, + "scope": 5064, "src": "1723:21:9", "stateVariable": false, "storageLocation": "default", @@ -1291,7 +1301,7 @@ "typeString": "address" }, "typeName": { - "id": 4450, + "id": 5027, "name": "address", "nodeType": "ElementaryTypeName", "src": "1723:7:9", @@ -1305,12 +1315,12 @@ }, { "constant": false, - "id": 4453, + "id": 5030, "mutability": "mutable", "name": "_linkerCodeHash", "nameLocation": "1762:15:9", "nodeType": "VariableDeclaration", - "scope": 4487, + "scope": 5064, "src": "1754:23:9", "stateVariable": false, "storageLocation": "default", @@ -1319,7 +1329,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 4452, + "id": 5029, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1754:7:9", @@ -1332,12 +1342,12 @@ }, { "constant": false, - "id": 4455, + "id": 5032, "mutability": "mutable", "name": "_linkerFactory", "nameLocation": "1795:14:9", "nodeType": "VariableDeclaration", - "scope": 4487, + "scope": 5064, "src": "1787:22:9", "stateVariable": false, "storageLocation": "default", @@ -1346,7 +1356,7 @@ "typeString": "address" }, "typeName": { - "id": 4454, + "id": 5031, "name": "address", "nodeType": "ElementaryTypeName", "src": "1787:7:9", @@ -1360,12 +1370,12 @@ }, { "constant": false, - "id": 4458, + "id": 5035, "mutability": "mutable", "name": "_extraData", "nameLocation": "1836:10:9", "nodeType": "VariableDeclaration", - "scope": 4487, + "scope": 5064, "src": "1819:27:9", "stateVariable": false, "storageLocation": "memory", @@ -1375,7 +1385,7 @@ }, "typeName": { "baseType": { - "id": 4456, + "id": 5033, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1819:7:9", @@ -1384,7 +1394,7 @@ "typeString": "bytes32" } }, - "id": 4457, + "id": 5034, "nodeType": "ArrayTypeName", "src": "1819:9:9", "typeDescriptions": { @@ -1398,17 +1408,17 @@ "src": "1666:186:9" }, "returnParameters": { - "id": 4463, + "id": 5040, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4462, + "id": 5039, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4487, + "scope": 5064, "src": "1880:7:9", "stateVariable": false, "storageLocation": "default", @@ -1417,7 +1427,7 @@ "typeString": "address" }, "typeName": { - "id": 4461, + "id": 5038, "name": "address", "nodeType": "ElementaryTypeName", "src": "1880:7:9", @@ -1432,7 +1442,7 @@ ], "src": "1879:9:9" }, - "scope": 4488, + "scope": 5065, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -1442,39 +1452,39 @@ "baseContracts": [ { "baseName": { - "id": 4430, + "id": 5007, "name": "IHyperdriveDeployer", "nameLocations": [ "948:19:9" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6453, + "referencedDeclaration": 6983, "src": "948:19:9" }, - "id": 4431, + "id": 5008, "nodeType": "InheritanceSpecifier", "src": "948:19:9" } ], "canonicalName": "ERC4626HyperdriveDeployer", "contractDependencies": [ - 5756 + 6333 ], "contractKind": "contract", "documentation": { - "id": 4429, + "id": 5006, "nodeType": "StructuredDocumentation", "src": "330:580:9", "text": "@author DELV\n @title ERC4626HyperdriveFactory\n @notice This is a minimal factory which contains only the logic to deploy\n hyperdrive and is called by a more complex factory which\n initializes the Hyperdrive instances and acts as a registry.\n @dev We use two contracts to avoid any code size limit issues with Hyperdrive.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 4488, - 6453 + 5065, + 6983 ], "name": "ERC4626HyperdriveDeployer", "nameLocation": "919:25:9", - "scope": 4489, + "scope": 5066, "usedErrors": [] } ], diff --git a/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json b/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json index c6cbb46521..b4bd63b93d 100644 --- a/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json +++ b/packages/hyperdrive/src/abis/ERC4626HyperdriveFactory.sol/ERC4626HyperdriveFactory.json @@ -159,6 +159,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -341,6 +346,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -725,43 +735,43 @@ } ], "bytecode": { - "object": "0x6101006040523480156200001257600080fd5b5060405162003f4e38038062003f4e8339810160408190526200003591620003d3565b60808087018051519182905280516020015160a052516040015160c0528690869086908690670de0b6b3a76400001080620000795750670de0b6b3a764000060a051115b806200008e5750670de0b6b3a764000060c051115b15620000ad5760405163a3932d2d60e01b815260040160405180910390fd5b6080516060850151511180620000cc575060a051846060015160200151115b80620000e1575060c051846060015160400151115b15620001005760405163cd4e616760e01b815260040160405180910390fd5b606084015180516007556020808201516008556040918201516009558551600080546001600160a01b03199081166001600160a01b03938416179091558288015160048054831691841691909117905592870151600a805490941691161790915560a085015180516200017892600b920190620001d8565b5060018055600380546001600160a01b03199081166001600160a01b03958616179091556005805490911692841692909217909155600655831660e052508051620001cb90600c906020840190620001d8565b5050505050505062000516565b82805482825590600052602060002090810192821562000230579160200282015b828111156200023057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001f9565b506200023e92915062000242565b5090565b5b808211156200023e576000815560010162000243565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171562000294576200029462000259565b60405290565b6001600160a01b0381168114620002b057600080fd5b50565b8051620002c0816200029a565b919050565b600060608284031215620002d857600080fd5b604051606081016001600160401b0381118282101715620002fd57620002fd62000259565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f8301126200033657600080fd5b815160206001600160401b038083111562000355576200035562000259565b8260051b604051601f19603f830116810181811084821117156200037d576200037d62000259565b6040529384528581018301938381019250878511156200039c57600080fd5b83870191505b84821015620003c8578151620003b8816200029a565b83529183019190830190620003a2565b979650505050505050565b60008060008060008060c08789031215620003ed57600080fd5b86516001600160401b03808211156200040557600080fd5b90880190610140828b0312156200041b57600080fd5b620004256200026f565b825162000432816200029a565b8152602083015162000444816200029a565b60208201526200045760408401620002b3565b60408201526200046b8b60608501620002c5565b60608201526200047f8b60c08501620002c5565b6080820152610120830151828111156200049857600080fd5b620004a68c82860162000324565b60a0830152509750620004bc60208a01620002b3565b9650620004cc60408a01620002b3565b955060608901519450620004e360808a01620002b3565b935060a0890151915080821115620004fa57600080fd5b506200050989828a0162000324565b9150509295509295509295565b60805160a05160c05160e0516139fe620005506000396000610e34015260006106af015260006106800152600061065501526139fe6000f3fe608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80635aa6e67511620001065780635aa6e675146200020f5780637613b08c146200023157806377b81aac14620002565780637f7c5a7d14620002965780638522978514620002bd57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635834c76014620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f3d565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f64565b62000509565b348015620001e057600080fd5b506200016d620001f236600462000fde565b62000547565b620001916200020936600462001152565b620005a5565b3480156200021c57600080fd5b5060005462000191906001600160a01b031681565b3480156200023e57600080fd5b506200016d620002503660046200125d565b62000628565b3480156200026357600080fd5b50620002876200027536600462000f3d565b60026020526000908152604090205481565b604051908152602001620001a5565b348015620002a357600080fd5b50620002ae6200070a565b604051620001a5919062001276565b348015620002ca57600080fd5b506200016d620002dc36600462000f3d565b6200076e565b348015620002ef57600080fd5b50620002ae620007f7565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f64565b62000859565b3480156200038b57600080fd5b506200016d6200039d36600462000f3d565b62000892565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200028760065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f3d565b62000905565b3480156200040f57600080fd5b506200016d6200042136600462000f3d565b6200097a565b3480156200043457600080fd5b506200028760015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831617905560018054906000620004cd83620012c5565b90915550506040516001600160a01b038216907f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b0316331462000534576040516282b42960e81b815260040160405180910390fd5b62000542600c838362000e97565b505050565b6000546001600160a01b0316331462000572576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b600080600c8054806020026020016040519081016040528092919081815260200182805480156200060057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620005e1575b50505050509050606081905060006200061c88838888620009ef565b98975050505050505050565b6000546001600160a01b0316331462000653576040516282b42960e81b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081351180620006a657507f00000000000000000000000000000000000000000000000000000000000000008160200135115b80620006d557507f00000000000000000000000000000000000000000000000000000000000000008160400135115b15620006f45760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b8054806020026020016040519081016040528092919081815260200182805480156200076457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000745575b5050505050905090565b6000546001600160a01b0316331462000799576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620007ad57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000764576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000745575050505050905090565b6000546001600160a01b0316331462000884576040516282b42960e81b815260040160405180910390fd5b62000542600b838362000e97565b6000546001600160a01b03163314620008bd576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000930576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b03163314620009a5576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b6000341562000a1157604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b0390811660e08701523060c087015260408051606081018252600754815260085460208201526009549181019190915261010087015260065460055460009262000a6a92899289921662000e2d565b600354600654600554604051633b392fc360e11b81529394506000936001600160a01b03938416936376725f869362000ab0938d938993909116908d90600401620013e0565b6020604051808303816000875af115801562000ad0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af6919062001428565b6001546001600160a01b0380831660009081526002602052604090819020839055600454821660c08c0152600554600654915194955092937fb2df24ce42d3714dd0c39e37e9f9d91fb9b479178d626458aeed80ffd39bd08b9362000b669387938e9392909116918d9062001448565b60405180910390a286516040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000bc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000beb919062001491565b50865160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c66919062001491565b62000c84576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810186905260248101859052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000ce0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d069190620014b5565b5060005b600b5481101562000dbe57816001600160a01b0316637180c8ca600b838154811062000d3a5762000d3a620014cf565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d8f57600080fd5b505af115801562000da4573d6000803e3d6000fd5b50505050808062000db590620012c5565b91505062000d0a565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000e0957600080fd5b505af115801562000e1e573d6000803e3d6000fd5b50929998505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e619062000eff565b62000e709493929190620014e5565b604051809103906000f08015801562000e8d573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000eed579160200282015b8281111562000eed5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000eb8565b5062000efb92915062000f0d565b5090565b6124aa806200151f83390190565b5b8082111562000efb576000815560010162000f0e565b6001600160a01b038116811462000f3a57600080fd5b50565b60006020828403121562000f5057600080fd5b813562000f5d8162000f24565b9392505050565b6000806020838503121562000f7857600080fd5b823567ffffffffffffffff8082111562000f9157600080fd5b818501915085601f83011262000fa657600080fd5b81358181111562000fb657600080fd5b8660208260051b850101111562000fcc57600080fd5b60209290920196919550909350505050565b60006020828403121562000ff157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff8111828210171562001035576200103562000ff8565b60405290565b8035620010488162000f24565b919050565b6000606082840312156200106057600080fd5b6040516060810181811067ffffffffffffffff8211171562001086576200108662000ff8565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620010bf57600080fd5b8135602067ffffffffffffffff80831115620010df57620010df62000ff8565b8260051b604051601f19603f8301168101818110848211171562001107576200110762000ff8565b6040529384528581018301938381019250878511156200112657600080fd5b83870191505b8482101562001147578135835291830191908301906200112c565b979650505050505050565b6000806000808486036102008112156200116b57600080fd5b6101a0808212156200117c57600080fd5b620011866200100e565b915062001193876200103b565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a0830152620011d560c088016200103b565b60c0830152620011e860e088016200103b565b60e0830152610100620011fe89828a016200104d565b9083015261016087013561012083015261018087013561014083015290945085013567ffffffffffffffff8111156200123657600080fd5b6200124487828801620010ad565b94979496505050506101c0830135926101e00135919050565b6000606082840312156200127057600080fd5b50919050565b6020808252825182820181905260009190848201906040850190845b81811015620012b95783516001600160a01b03168352928401929184019160010162001292565b50909695505050505050565b600060018201620012e657634e487b7160e01b600052601160045260246000fd5b5060010190565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c08101516200134760c08401826001600160a01b03169052565b5060e08101516200136360e08401826001600160a01b03169052565b5061010081810151805184830152602081015161012085015260408101516101408501525050610120810151610160830152610140015161018090910152565b600081518084526020808501945080840160005b83811015620013d557815187529582019590820190600101620013b7565b509495945050505050565b6000610220620013f18389620012ed565b6001600160a01b038781166101a08501526101c0840187905285166101e084015261020083018190526200061c81840185620013a3565b6000602082840312156200143b57600080fd5b815162000f5d8162000f24565b6001600160a01b038681168252600090610220906200146b6020850189620012ed565b8087166101c085015250846101e0840152806102008401526200061c81840185620013a3565b600060208284031215620014a457600080fd5b8151801515811462000f5d57600080fd5b600060208284031215620014c857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102008101620014f68287620012ed565b6101a08201949094526001600160a01b039283166101c082015291166101e09091015291905056fe61024060405260016000553480156200001757600080fd5b50604051620024aa380380620024aa8339810160408190526200003a91620002b0565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b6040810151610160526080810151600003620000b257604051635428734d60e01b815260040160405180910390fd5b60808101805160e0525160608201511080620000e2575080608001518160600151620000df9190620003ab565b15155b15620001015760405163253fffcf60e11b815260040160405180910390fd5b606081015161010090815260a08201516101205260208201516101405260c0820151601180546001600160a01b0319166001600160a01b0392831617905560e0830151166101e05281015151670de0b6b3a76400001080620001735750670de0b6b3a764000081610100015160200151115b806200018f5750670de0b6b3a764000081610100015160400151115b15620001ae576040516322f72cc360e11b815260040160405180910390fd5b6101008101805151610180528051602001516101a05251604001516101c0526101400151610200525050506001600160a01b03166102205250620003ce915050565b60405161016081016001600160401b03811182821017156200022257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024057600080fd5b919050565b6000606082840312156200025857600080fd5b604051606081016001600160401b03811182821017156200028957634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610200811215620002c957600080fd5b6101a080821215620002da57600080fd5b620002e4620001f0565b9150620002f18762000228565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a08301526200033360c0880162000228565b60c08301526200034660e0880162000228565b60e08301526101006200035c89828a0162000245565b9083015261016087015161012083015261018087015161014083015286015190945092506200038f6101c0860162000228565b9150620003a06101e0860162000228565b905092959194509250565b600082620003c957634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051612003620004a7600039600081816103370152610d4001526000610a2b0152600061097c015260006109f4015260006109cf015260006109ac0152600081816108d70152610e6d0152600081816108ad0152610e4701526000818161094c0152610e930152600081816108fc01526111c901526000818161092601526113c10152600081816108880152610b9801526000610beb01526000610b5801526120036000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c8063b0d96580116100ad578063c69e16ad11610071578063c69e16ad1461028d578063c905a4b514610295578063cc962f8e1461029d578063d8165743146102c0578063e985e9c5146102d557600080fd5b8063b0d9658014610235578063bd85b0391461024a578063becee9c31461025d578063c45a01551461027d578063c55dae631461028557600080fd5b80633656eec2116100f45780633656eec2146101d45780634e41a1fb146101e757806360246c88146101fa5780637ecebe001461020f578063afdac68d1461022257600080fd5b8062ad800c1461012557806316f0115b1461014e57806320fc48811461016e57806321ff32a9146101b3575b600080fd5b61013861013336600461191f565b6102e8565b604051610145919061197e565b60405180910390f35b610156610329565b6040516001600160a01b039091168152602001610145565b61018161017c36600461191f565b61036c565b6040805182516001600160801b0390811682526020808501518216908301529282015190921690820152606001610145565b6101c66101c13660046119a8565b6103d8565b604051908152602001610145565b6101c66101e23660046119e4565b61041e565b6101386101f536600461191f565b610457565b61020261047f565b6040516101459190611a10565b6101c661021d366004611a90565b610647565b6101c661023036600461191f565b610673565b61023d61086b565b6040516101459190611aab565b6101c661025836600461191f565b610a61565b61027061026b366004611b67565b610a83565b6040516101459190611bdc565b610156610b4a565b610156610b8a565b6101c6610bca565b6101c6610be4565b6102b06102ab366004611a90565b610c1c565b6040519015158152602001610145565b6102c8610c52565b6040516101459190611c20565b6102b06102e3366004611d13565b610cb8565b6060610324600560008481526020019081526020016000206040516020016103109190611d3d565b604051602081830303815290604052610cfc565b919050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103699101610310565b90565b6040805160608101825260008082526020820181905291810191909152610324600e6000848152602001908152602001600020604051602001610310919081546001600160801b03808216835260809190911c6020830152600190920154909116604082015260600190565b60008381526004602090815260408083206001600160a01b03868116855290835281842090851684528252808320548151928301526104179101610310565b9392505050565b60008281526001602090815260408083206001600160a01b03851684528252808320548151928301526104519101610310565b92915050565b6060610324600660008481526020019081526020016000206040516020016103109190611d3d565b6104e36040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006104ed610d20565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105589190611dff565b6105629190611e12565b905060006105818361057b61057686610db8565b610f25565b90611154565b60408051610180810182526008546001600160801b038082168352600160801b9182900481166020840152928201869052606082018790526009548084166080840152600a54841660a0840152819004831660c0830152600b5480841660e08401528190048316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106245761061f8486611169565b610627565b60005b8152509050610640816040516020016103109190611a10565b5050505090565b6001600160a01b0381166000908152600760209081526040808320548151928301526103249101610310565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106106a5576106a5611e25565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b03169082015291506106e68685611e12565b905060008315610700576106fb600185611e12565b61070f565b60125461070f90600190611e12565b60408051808201909152600080825260208201529091505b8482146107be5760006012838154811061074357610743611e25565b6000918252602090912001805490915063ffffffff1684106107915760408051808201909152905463ffffffff8116825264010000000090046001600160e01b0316602082015290506107be565b82156107a7576107a2600184611e12565b6107b6565b6012546107b690600190611e12565b925050610727565b805163ffffffff166000036107e657604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b031661080e9190611e12565b8251865191925060009161082b9163ffffffff9081169116611e12565b905061085e61084c61084583670de0b6b3a7640000611e3b565b8490611169565b60405160200161031091815260200190565b5050505050505050919050565b610873611888565b60408051610160810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a0850152601154831660c08501527f000000000000000000000000000000000000000000000000000000000000000090921660e0840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101008301919091526012546101208301527f0000000000000000000000000000000000000000000000000000000000000000610140830152915161036992610310929101611aab565b6000818152600260209081526040808320548151928301526103249101610310565b606060008267ffffffffffffffff811115610aa057610aa0611e52565b604051908082528060200260200182016040528015610ac9578160200160208202803683370190505b50905060005b83811015610b2e576000858583818110610aeb57610aeb611e25565b90506020020135905060008154905080848481518110610b0d57610b0d611e25565b60200260200101818152505050508080610b2690611e68565b915050610acf565b50610b43816040516020016103109190611bdc565b5092915050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103699101610310565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103699101610310565b600061036960105460405160200161031091815260200190565b60006103697f000000000000000000000000000000000000000000000000000000000000000060405160200161031091815260200190565b6001600160a01b0381166000908152601460209081526040808320549051610324926103109260ff169101901515815260200190565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915261036960086040516020016103109190611e81565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff90911615159181019190915290916104519101610310565b80604051636e64089360e11b8152600401610d17919061197e565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db39190611f00565b905090565b610e1560405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600160801b909104811660208301529181018490527f000000000000000000000000000000000000000000000000000000000000000060608201527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a0820152600954821660c0820152600a54909160e0830191610ed5911661117e565b81526009546001600160801b03600160801b90910481166020830152600b54604090920191610f04911661117e565b8152600b54600160801b90046001600160801b031660209091015292915050565b600080610f4583610120015184610100015161115490919063ffffffff16565b60e084015160c0850151610f5891611154565b610f629190611f19565b90506000811315610fc057610fa98360000151846020015183610f9a8760a00151670de0b6b3a76400006111f490919063ffffffff16565b87604001518860600151611222565b83518490610fb8908390611e12565b9052506110c5565b60008112156110c5576000610fff846000015185602001518660a00151670de0b6b3a7640000610ff09190611e12565b876040015188606001516112b3565b915050808261100d90611f39565b11156110195780611022565b61102282611f39565b905080156110795761106684600001518560200151836110578860a00151670de0b6b3a76400006111f490919063ffffffff16565b8860400151896060015161133d565b84518590611075908390611dff565b9052505b6110b18161108684611f39565b6110909190611e12565b60408601516101008701516110a491611154565b610140870151919061139c565b845185906110c0908390611dff565b905250505b60006110f38460e00151670de0b6b3a76400006110e29190611e12565b604086015160c0870151919061139c565b611121856101200151670de0b6b3a764000061110f9190611e12565b6040870151610100880151919061139c565b61112b9190611f19565b845190915061113b908290611f55565b808552608085015161114c91611e12565b949350505050565b60006104178383670de0b6b3a764000061139c565b600061041783670de0b6b3a76400008461139c565b600080670de0b6b3a76400006111926113ba565b61119c9190611e3b565b90508083116111ac5760006111b6565b6111b68184611e12565b91506104176111ed670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000611e3b565b8390611169565b6000828211156112165760405162d6e85160e61b815260040160405180910390fd5b600061114c8385611e12565b60008061122f8484611169565b9050600061124082858b898c6113f0565b9050611256866112508a8a611427565b90611457565b9750600061128361126f670de0b6b3a7640000896114ae565b6112508561127d868e6111f4565b90611169565b905061128f8186611169565b9050808a11156112a6576112a3818b611e12565b93505b5050509695505050505050565b600080806112c18585611169565b905060006112d282868b8a8c6113f0565b905060006113076112eb670de0b6b3a76400008a611169565b611250611300670de0b6b3a764000087611dff565b8590611169565b905060006113158288611169565b90506113218b82611e12565b61132b838c611e12565b95509550505050509550959350505050565b60008061134a8484611169565b9050600061135b82858b898c6113f0565b905061136b866112508a8a6111f4565b9750600061138461126f670de0b6b3a7640000896114ae565b90506113908186611169565b90506112a3818b6111f4565b60008260001904841183021582026113b357600080fd5b5091020490565b60006113e67f000000000000000000000000000000000000000000000000000000000000000042611f8b565b610db39042611e12565b600061141d6113ff8385611457565b611417611410866112508a8a611154565b8990611154565b90611427565b9695505050505050565b6000806114348385611dff565b90508381101561041757604051632d59cfbd60e01b815260040160405180910390fd5b6000816000036114705750670de0b6b3a7640000610451565b8260000361148057506000610451565b81600061148c856114c3565b90508181026114a3670de0b6b3a764000082611f9f565b905061141d816116d7565b600061041783670de0b6b3a764000084611862565b6000808212156114e657604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136116f257506000919050565b680755bf798b4a1bf1e5821261171b5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600082600019048411830215820261187957600080fd5b50910281810615159190040190565b60405180610160016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200161190b60405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b60006020828403121561193157600080fd5b5035919050565b6000815180845260005b8181101561195e57602081850181015186830182015201611942565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104176020830184611938565b80356001600160a01b038116811461032457600080fd5b6000806000606084860312156119bd57600080fd5b833592506119cd60208501611991565b91506119db60408501611991565b90509250925092565b600080604083850312156119f757600080fd5b82359150611a0760208401611991565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e0808301519082015261010080830151908201526101208083015190820152610140808301519082015261016091820151918101919091526101800190565b600060208284031215611aa257600080fd5b61041782611991565b81516001600160a01b031681526101a081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151611b0960c08401826001600160a01b03169052565b5060e0830151611b2460e08401826001600160a01b03169052565b5061010083810151805184830152602081015161012085015260408101516101408501525050610120830151610160830152610140909201516101809091015290565b60008060208385031215611b7a57600080fd5b823567ffffffffffffffff80821115611b9257600080fd5b818501915085601f830112611ba657600080fd5b813581811115611bb557600080fd5b8660208260051b8501011115611bca57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1457835183529284019291840191600101611bf8565b50909695505050505050565b81516001600160801b0316815261014081016020830151611c4c60208401826001600160801b03169052565b506040830151611c6760408401826001600160801b03169052565b506060830151611c8260608401826001600160801b03169052565b506080830151611c9d60808401826001600160801b03169052565b5060a0830151611cb860a08401826001600160801b03169052565b5060c0830151611cd360c08401826001600160801b03169052565b5060e0830151611cee60e08401826001600160801b03169052565b506101008381015115159083015261012080840151801515828501525b505092915050565b60008060408385031215611d2657600080fd5b611d2f83611991565b9150611a0760208401611991565b600060208083526000845481600182811c915080831680611d5f57607f831692505b8583108103611d7c57634e487b7160e01b85526022600452602485fd5b878601838152602001818015611d995760018114611daf57611dda565b60ff198616825284151560051b82019650611dda565b60008b81526020902060005b86811015611dd457815484820152908501908901611dbb565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561045157610451611de9565b8181038181111561045157610451611de9565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761045157610451611de9565b634e487b7160e01b600052604160045260246000fd5b600060018201611e7a57611e7a611de9565b5060010190565b81546001600160801b038082168352608091821c602084015260018401548082166040850152821c6060840152600284015480821683850152821c60a0840152600384015490811660c0840152901c60e0820152600482015460ff8082161515610100840152600882901c161515610120830152610140820190610b43565b600060208284031215611f1257600080fd5b5051919050565b8181036000831280158383131683831282161715610b4357610b43611de9565b6000600160ff1b8201611f4e57611f4e611de9565b5060000390565b8082018281126000831280158216821582161715611d0b57611d0b611de9565b634e487b7160e01b600052601260045260246000fd5b600082611f9a57611f9a611f75565b500690565b600082611fae57611fae611f75565b600160ff1b821460001984141615611fc857611fc8611de9565b50059056fea2646970667358221220095af892fb19cb2e90f09dfae2f69f9fd449a73c6263ae6116508236a3ebb47764736f6c63430008130033a2646970667358221220f38fa8fcdb7017acef10d9f8c792c60a2d02b9b8d6f6d9ee73ade3d3880428d964736f6c63430008130033", - "sourceMap": "861:3637:10:-:0;;;1714:539;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4843:22:11;;;;;;:28;4829:42;;;;4894:22;;:27;;;4881:40;;4950:22;:33;;;4931:52;;1985:14:10;;2013:9;;2036:14;;2064:15;;535:4:31;-1:-1:-1;5010:35:11;:85;;;535:4:31;5061:10:11;;:34;5010:85;:141;;;;535:4:31;5111:16:11;;:40;5010:141;4993:228;;;5183:27;;-1:-1:-1;;;5183:27:11;;;;;;;;;;;4993:228;5275:11;;5247:19;;;;:25;:39;;:92;;;5329:10;;5302:14;:19;;;:24;;;:37;5247:92;:157;;;;5388:16;;5355:14;:19;;;:30;;;:49;5247:157;5230:241;;;5436:24;;-1:-1:-1;;;5436:24:11;;;;;;;;;;;5230:241;5487:19;;;;5480:26;;:4;:26;;;;;;;;;;;;;;;5574:25;;-1:-1:-1;5561:38:11;;-1:-1:-1;;;;;;5561:38:11;;;-1:-1:-1;;;;;5561:38:11;;;;;;;5632:35;;;;5609:20;:58;;;;;;;;;;;;;5692:27;;;;5677:12;:42;;;;;;;;;;;5747:29;;;;5729:47;;;;:15;;:47;;;:::i;:::-;-1:-1:-1;5803:1:11;5786:18;;5814;:30;;-1:-1:-1;;;;;;5814:30:11;;;-1:-1:-1;;;;;5814:30:11;;;;;;;5854:13;:30;;;;;;;;;;;;;;;5894:14;:32;2144:12:10;::::1;;::::0;-1:-1:-1;2216:30:10;;::::1;::::0;:13:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1714:539:::0;;;;;;861:3637;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;861:3637:10;-1:-1:-1;;;;;861:3637:10;;;;;;;;;;;-1:-1:-1;861:3637:10;;;;;;;-1:-1:-1;861:3637:10;;;-1:-1:-1;861:3637:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:156;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:247;213:2;207:9;255:3;243:16;;-1:-1:-1;;;;;274:34:156;;310:22;;;271:62;268:88;;;336:18;;:::i;:::-;372:2;365:22;146:247;:::o;398:131::-;-1:-1:-1;;;;;473:31:156;;463:42;;453:70;;519:1;516;509:12;453:70;398:131;:::o;534:138::-;613:13;;635:31;613:13;635:31;:::i;:::-;534:138;;;:::o;677:525::-;739:5;787:4;775:9;770:3;766:19;762:30;759:50;;;805:1;802;795:12;759:50;838:2;832:9;880:4;868:17;;-1:-1:-1;;;;;900:34:156;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;1002:10;998:2;991:22;;1031:6;1022:15;;1067:9;1061:16;1053:6;1046:32;1132:2;1121:9;1117:18;1111:25;1106:2;1098:6;1094:15;1087:50;1191:2;1180:9;1176:18;1170:25;1165:2;1157:6;1153:15;1146:50;;677:525;;;;:::o;1207:974::-;1272:5;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;1366:13;;1398:4;-1:-1:-1;;;;;1451:10:156;;;1448:36;;;1464:18;;:::i;:::-;1510:2;1507:1;1503:10;1542:2;1536:9;1605:2;1601:7;1596:2;1592;1588:11;1584:25;1576:6;1572:38;1660:6;1648:10;1645:22;1640:2;1628:10;1625:18;1622:46;1619:72;;;1671:18;;:::i;:::-;1707:2;1700:22;1757:18;;;1833:15;;;1829:24;;;1791:15;;;;-1:-1:-1;1865:15:156;;;1862:35;;;1893:1;1890;1883:12;1862:35;1929:2;1921:6;1917:15;1906:26;;1941:210;1957:6;1952:3;1949:15;1941:210;;;2030:3;2024:10;2047:31;2072:5;2047:31;:::i;:::-;2091:18;;2129:12;;;;1974;;;;1941:210;;;2169:6;1207:974;-1:-1:-1;;;;;;;1207:974:156:o;2186:1732::-;2402:6;2410;2418;2426;2434;2442;2495:3;2483:9;2474:7;2470:23;2466:33;2463:53;;;2512:1;2509;2502:12;2463:53;2539:16;;-1:-1:-1;;;;;2604:14:156;;;2601:34;;;2631:1;2628;2621:12;2601:34;2654:22;;;;2710:6;2692:16;;;2688:29;2685:49;;;2730:1;2727;2720:12;2685:49;2756:17;;:::i;:::-;2803:2;2797:9;2815:33;2840:7;2815:33;:::i;:::-;2857:22;;2917:2;2909:11;;2903:18;2930:33;2903:18;2930:33;:::i;:::-;2990:2;2979:14;;2972:31;3035:42;3073:2;3065:11;;3035:42;:::i;:::-;3030:2;3023:5;3019:14;3012:66;3110:55;3157:7;3152:2;3148;3144:11;3110:55;:::i;:::-;3105:2;3098:5;3094:14;3087:79;3200:56;3248:7;3242:3;3238:2;3234:12;3200:56;:::i;:::-;3193:4;3186:5;3182:16;3175:82;3296:3;3292:2;3288:12;3282:19;3326:2;3316:8;3313:16;3310:36;;;3342:1;3339;3332:12;3310:36;3380:67;3439:7;3428:8;3424:2;3420:17;3380:67;:::i;:::-;3373:4;3362:16;;3355:93;-1:-1:-1;3366:5:156;-1:-1:-1;3491:49:156;3536:2;3521:18;;3491:49;:::i;:::-;3481:59;;3559:49;3604:2;3593:9;3589:18;3559:49;:::i;:::-;3549:59;;3648:2;3637:9;3633:18;3627:25;3617:35;;3671:51;3716:4;3705:9;3701:20;3671:51;:::i;:::-;3661:61;;3768:4;3757:9;3753:20;3747:27;3731:43;;3799:2;3789:8;3786:16;3783:36;;;3815:1;3812;3805:12;3783:36;;3838:74;3904:7;3893:8;3882:9;3878:24;3838:74;:::i;:::-;3828:84;;;2186:1732;;;;;;;;:::o;:::-;861:3637:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x6101006040523480156200001257600080fd5b50604051620041aa380380620041aa8339810160408190526200003591620003d3565b60808087018051519182905280516020015160a052516040015160c0528690869086908690670de0b6b3a76400001080620000795750670de0b6b3a764000060a051115b806200008e5750670de0b6b3a764000060c051115b15620000ad5760405163a3932d2d60e01b815260040160405180910390fd5b6080516060850151511180620000cc575060a051846060015160200151115b80620000e1575060c051846060015160400151115b15620001005760405163cd4e616760e01b815260040160405180910390fd5b606084015180516007556020808201516008556040918201516009558551600080546001600160a01b03199081166001600160a01b03938416179091558288015160048054831691841691909117905592870151600a805490941691161790915560a085015180516200017892600b920190620001d8565b5060018055600380546001600160a01b03199081166001600160a01b03958616179091556005805490911692841692909217909155600655831660e052508051620001cb90600c906020840190620001d8565b5050505050505062000516565b82805482825590600052602060002090810192821562000230579160200282015b828111156200023057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001f9565b506200023e92915062000242565b5090565b5b808211156200023e576000815560010162000243565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171562000294576200029462000259565b60405290565b6001600160a01b0381168114620002b057600080fd5b50565b8051620002c0816200029a565b919050565b600060608284031215620002d857600080fd5b604051606081016001600160401b0381118282101715620002fd57620002fd62000259565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600082601f8301126200033657600080fd5b815160206001600160401b038083111562000355576200035562000259565b8260051b604051601f19603f830116810181811084821117156200037d576200037d62000259565b6040529384528581018301938381019250878511156200039c57600080fd5b83870191505b84821015620003c8578151620003b8816200029a565b83529183019190830190620003a2565b979650505050505050565b60008060008060008060c08789031215620003ed57600080fd5b86516001600160401b03808211156200040557600080fd5b90880190610140828b0312156200041b57600080fd5b620004256200026f565b825162000432816200029a565b8152602083015162000444816200029a565b60208201526200045760408401620002b3565b60408201526200046b8b60608501620002c5565b60608201526200047f8b60c08501620002c5565b6080820152610120830151828111156200049857600080fd5b620004a68c82860162000324565b60a0830152509750620004bc60208a01620002b3565b9650620004cc60408a01620002b3565b955060608901519450620004e360808a01620002b3565b935060a0890151915080821115620004fa57600080fd5b506200050989828a0162000324565b9150509295509295509295565b60805160a05160c05160e051613c5a620005506000396000610e350152600061062c015260006105fd015260006105d20152613c5a6000f3fe608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80637613b08c11620001065780637613b08c146200021a57806377b81aac146200023f5780637f7c5a7d146200027f5780638522978514620002a65780638927f4e914620002cb57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635aa6e67514620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f3e565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f65565b62000509565b348015620001e057600080fd5b506200016d620001f236600462000fdf565b62000547565b3480156200020557600080fd5b5060005462000191906001600160a01b031681565b3480156200022757600080fd5b506200016d6200023936600462000ff9565b620005a5565b3480156200024c57600080fd5b50620002706200025e36600462000f3e565b60026020526000908152604090205481565b604051908152602001620001a5565b3480156200028c57600080fd5b506200029762000687565b604051620001a5919062001024565b348015620002b357600080fd5b506200016d620002c536600462000f3e565b620006eb565b62000191620002dc366004620011bb565b62000774565b348015620002ef57600080fd5b5062000297620007f7565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f65565b62000859565b3480156200038b57600080fd5b506200016d6200039d36600462000f3e565b62000892565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200027060065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f3e565b62000905565b3480156200040f57600080fd5b506200016d6200042136600462000f3e565b6200097a565b3480156200043457600080fd5b506200027060015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831617905560018054906000620004cd83620012d1565b90915550506040516001600160a01b038216907f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b0316331462000534576040516282b42960e81b815260040160405180910390fd5b62000542600c838362000e98565b505050565b6000546001600160a01b0316331462000572576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b6000546001600160a01b03163314620005d0576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000813511806200062357507f00000000000000000000000000000000000000000000000000000000000000008160200135115b806200065257507f00000000000000000000000000000000000000000000000000000000000000008160400135115b15620006715760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b805480602002602001604051908101604052809291908181526020018280548015620006e157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006c2575b5050505050905090565b6000546001600160a01b0316331462000716576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166200072a57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b600080600c805480602002602001604051908101604052809291908181526020018280548015620007cf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620007b0575b5050505050905060608190506000620007eb88838888620009ef565b98975050505050505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620006e1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006c2575050505050905090565b6000546001600160a01b0316331462000884576040516282b42960e81b815260040160405180910390fd5b62000542600b838362000e98565b6000546001600160a01b03163314620008bd576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000930576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b03163314620009a5576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b6000341562000a1157604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b039081166101008701523060e087015260408051606081018252600754815260085460208201526009549181019190915261012087015260065460055460009262000a6b92899289921662000e2e565b60035460065460055460405163e3420f4f60e01b81529394506000936001600160a01b039384169363e3420f4f9362000ab1938d938993909116908d90600401620013f1565b6020604051808303816000875af115801562000ad1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af7919062001439565b6001546001600160a01b0380831660009081526002602052604090819020839055600454821660e08c0152600554600654915194955092937fc6f4867fb04085fae8d5bc8a6eb6bd83992441fe62b92acc3710f0cedf0e753a9362000b679387938e9392909116918d9062001459565b60405180910390a286516040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bec9190620014a2565b50865160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c679190620014a2565b62000c85576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810186905260248101859052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000ce1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d079190620014c6565b5060005b600b5481101562000dbf57816001600160a01b0316637180c8ca600b838154811062000d3b5762000d3b620014e0565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d9057600080fd5b505af115801562000da5573d6000803e3d6000fd5b50505050808062000db690620012d1565b91505062000d0b565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000e0a57600080fd5b505af115801562000e1f573d6000803e3d6000fd5b50929998505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e629062000f00565b62000e719493929190620014f6565b604051809103906000f08015801562000e8e573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000eee579160200282015b8281111562000eee5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000eb9565b5062000efc92915062000f0e565b5090565b6126f5806200153083390190565b5b8082111562000efc576000815560010162000f0f565b6001600160a01b038116811462000f3b57600080fd5b50565b60006020828403121562000f5157600080fd5b813562000f5e8162000f25565b9392505050565b6000806020838503121562000f7957600080fd5b823567ffffffffffffffff8082111562000f9257600080fd5b818501915085601f83011262000fa757600080fd5b81358181111562000fb757600080fd5b8660208260051b850101111562000fcd57600080fd5b60209290920196919550909350505050565b60006020828403121562000ff257600080fd5b5035919050565b6000606082840312156200100c57600080fd5b50919050565b80356200101f8162000f25565b919050565b6020808252825182820181905260009190848201906040850190845b81811015620010675783516001600160a01b03168352928401929184019160010162001040565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620010b057620010b062001073565b60405290565b600060608284031215620010c957600080fd5b6040516060810181811067ffffffffffffffff82111715620010ef57620010ef62001073565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f8301126200112857600080fd5b8135602067ffffffffffffffff8083111562001148576200114862001073565b8260051b604051601f19603f8301168101818110848211171562001170576200117062001073565b6040529384528581018301938381019250878511156200118f57600080fd5b83870191505b84821015620011b05781358352918301919083019062001195565b979650505050505050565b600080600080848603610220811215620011d457600080fd5b6101c080821215620011e557600080fd5b620011ef62001089565b9150620011fc8762001012565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a083015260c087013560c08301526200124860e0880162001012565b60e08301526101006200125d81890162001012565b908301526101206200127289898301620010b6565b908301526101808701356101408301526101a087013561016083015290945085013567ffffffffffffffff811115620012aa57600080fd5b620012b88782880162001116565b94979496505050506101e0830135926102000135919050565b600060018201620012f257634e487b7160e01b600052601160045260246000fd5b5060010190565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e08101516200135d60e08401826001600160a01b03169052565b50610100818101516001600160a01b0381168483015250506101208181015180518483015260208101516101408501526040810151610160850152505061014081015161018083015261016001516101a090910152565b600081518084526020808501945080840160005b83811015620013e657815187529582019590820190600101620013c8565b509495945050505050565b6000610240620014028389620012f9565b6001600160a01b038781166101c08501526101e0840187905285166102008401526102208301819052620007eb81840185620013b4565b6000602082840312156200144c57600080fd5b815162000f5e8162000f25565b6001600160a01b038681168252600090610240906200147c6020850189620012f9565b8087166101e0850152508461020084015280610220840152620007eb81840185620013b4565b600060208284031215620014b557600080fd5b8151801515811462000f5e57600080fd5b600060208284031215620014d957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102208101620015078287620012f9565b6101c08201949094526001600160a01b039283166101e082015291166102009091015291905056fe61026060405260016000553480156200001757600080fd5b50604051620026f5380380620026f58339810160408190526200003a91620002bc565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b60408101516101605260608101516101805260a0810151600003620000bb57604051635428734d60e01b815260040160405180910390fd5b60a08101805160e0525160808201511080620000eb57508060a001518160800151620000e89190620003c2565b15155b156200010a5760405163253fffcf60e11b815260040160405180910390fd5b608081015161010090815260c082015161012090815260208301516101405260e0830151601180546001600160a01b0319166001600160a01b03928316179055918301519091166102005281015151670de0b6b3a764000010806200017f5750670de0b6b3a764000081610120015160200151115b806200019b5750670de0b6b3a764000081610120015160400151115b15620001ba576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101a0528051602001516101c05251604001516101e0526101600151610220525050506001600160a01b03166102405250620003e5915050565b60405161018081016001600160401b03811182821017156200022e57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024c57600080fd5b919050565b6000606082840312156200026457600080fd5b604051606081016001600160401b03811182821017156200029557634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610220811215620002d557600080fd5b6101c080821215620002e657600080fd5b620002f0620001fc565b9150620002fd8762000234565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a083015260c087015160c08301526200034960e0880162000234565b60e08301526101006200035e81890162000234565b90830152610120620003738989830162000251565b908301526101808701516101408301526101a08701516101608301528601519094509250620003a66101e0860162000234565b9150620003b7610200860162000234565b905092959194509250565b600082620003e057634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161222c620004c9600039600081816103720152610e1d01526000610aa1015260006109f101526000610a6a01526000610a4501526000610a220152600061094b0152600081816109260152610f5c0152600081816108fc0152610f360152600081816109c10152610f8201526000818161097501526112e301526000818161099b01526115380152600081816108d70152610c0e01526000610c6101526000610bce015261222c6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063bd85b039116100ad578063c905a4b511610071578063c905a4b5146102a1578063cc962f8e146102a9578063d8165743146102cc578063e985e9c5146102e1578063fba56008146102f457600080fd5b8063bd85b03914610256578063becee9c314610269578063c45a015514610289578063c55dae6314610291578063c69e16ad1461029957600080fd5b80634e41a1fb116100f45780634e41a1fb146101f357806360246c88146102065780637ecebe001461021b578063afdac68d1461022e578063b0d965801461024157600080fd5b8062ad800c1461013057806316f0115b1461015957806320fc48811461017957806321ff32a9146101bf5780633656eec2146101e0575b600080fd5b61014361013e366004611b05565b610323565b6040516101509190611b64565b60405180910390f35b610161610364565b6040516001600160a01b039091168152602001610150565b61018c610187366004611b05565b6103a7565b6040805182516001600160801b0390811682526020808501519091169082015291810151600f0b90820152606001610150565b6101d26101cd366004611b8e565b61040f565b604051908152602001610150565b6101d26101ee366004611bca565b610455565b610143610201366004611b05565b61048e565b61020e6104b6565b6040516101509190611bf6565b6101d2610229366004611c81565b6106a8565b6101d261023c366004611b05565b6106d4565b6102496108ba565b6040516101509190611c9c565b6101d2610264366004611b05565b610ad7565b61027c610277366004611d5e565b610af9565b6040516101509190611dd3565b610161610bc0565b610161610c00565b6101d2610c40565b6101d2610c5a565b6102bc6102b7366004611c81565b610c92565b6040519015158152602001610150565b6102d4610cc8565b6040516101509190611e17565b6102bc6102ef366004611f18565b610d36565b6102fc610d7a565b6040805182516001600160801b039081168252602093840151169281019290925201610150565b606061035f6005600084815260200190815260200160002060405160200161034b9190611f42565b604051602081830303815290604052610dd9565b919050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103a4910161034b565b90565b604080516060810182526000808252602082018190529181019190915261035f600e600084815260200190815260200160002060405160200161034b919081546001600160801b038116825260801c6020820152600190910154600f0b604082015260600190565b60008381526004602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261044e910161034b565b9392505050565b60008281526001602090815260408083206001600160a01b0385168452825280832054815192830152610488910161034b565b92915050565b606061035f6006600084815260200190815260200160002060405160200161034b9190611f42565b610521604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061052b610dfd565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105969190612004565b6105a09190612017565b905060008083116105b25760006105cd565b6105cd836105c76105c286610e95565b610ffc565b9061126e565b604080516101a0810182526008546001600160801b038082168352600b54600160801b808204600f0b602086015292839004821694840194909452606083018790526080830188905260095480821660a0850152600a54821660c0850152829004811660e0840152928316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106745761066f8486611283565b610677565b60005b8152600c546001600160801b03166020918201526040519192506106a19161034b91849101611bf6565b5050505090565b6001600160a01b03811660009081526007602090815260408083205481519283015261035f910161034b565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106107065761070661202a565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b03169082015291506107478685612017565b9050600083156107615761075c600185612017565b610770565b60125461077090600190612017565b60408051808201909152600080825260208201529091505b84821461081f576000601283815481106107a4576107a461202a565b6000918252602090912001805490915063ffffffff1684106107f25760408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152905061081f565b821561080857610803600184612017565b610817565b60125461081790600190612017565b925050610788565b805163ffffffff1660000361084757604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b031661086f9190612017565b8251865191925060009161088c9163ffffffff9081169116612017565b90506108ad61089b8284612056565b60405160200161034b91815260200190565b5050505050505050919050565b6108c2611a67565b60408051610180810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a08501527f000000000000000000000000000000000000000000000000000000000000000060c0850152601154831660e08501527f0000000000000000000000000000000000000000000000000000000000000000909216610100840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101208301919091526012546101408301527f000000000000000000000000000000000000000000000000000000000000000061016083015291516103a49261034b929101611c9c565b60008181526002602090815260408083205481519283015261035f910161034b565b606060008267ffffffffffffffff811115610b1657610b1661206a565b604051908082528060200260200182016040528015610b3f578160200160208202803683370190505b50905060005b83811015610ba4576000858583818110610b6157610b6161202a565b90506020020135905060008154905080848481518110610b8357610b8361202a565b60200260200101818152505050508080610b9c90612080565b915050610b45565b50610bb98160405160200161034b9190611dd3565b5092915050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103a4910161034b565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103a4910161034b565b60006103a460105460405160200161034b91815260200190565b60006103a47f000000000000000000000000000000000000000000000000000000000000000060405160200161034b91815260200190565b6001600160a01b038116600090815260146020908152604080832054905161035f9261034b9260ff169101901515815260200190565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526103a4600860405160200161034b9190612099565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff9091161515918101919091529091610488910161034b565b6040805180820190915260008082526020820152604080518082018252600d546001600160801b03808216808452600160801b90920481166020938401908152845193840192909252905116918101919091526103a49060600161034b565b80604051636e64089360e11b8152600401610df49190611b64565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e909190612128565b905090565b610ef260405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600b54600160801b90819004600f0b6020850152909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600954821660e0820152600a549091610100830191610fc59116611298565b81526009546001600160801b03600160801b90910481166020830152600b54604090920191610ff49116611298565b905292915050565b60008061101c83610140015184610120015161126e90919063ffffffff16565b61010084015160e08501516110309161126e565b61103a9190612141565b905060006110508460000151856020015161130e565b905060008213156110f25760006110928286604001518760a001518860c00151670de0b6b3a76400006110839190612017565b89606001518a6080015161132b565b91506110a0905081846113b4565b905080156110ec576110d9828660400151838860c00151670de0b6b3a76400006110ca9190612017565b89606001518a608001516113c9565b855186906110e8908390612017565b9052505b506111b0565b60008212156111b05761110482612161565b915060006111388286604001518760c00151670de0b6b3a76400006111299190612017565b88606001518960800151611408565b9150611146905081846113b4565b905080156111925761117f828660400151838860c00151670de0b6b3a76400006111709190612017565b89606001518a60800151611492565b8551869061118e908390612004565b9052505b61119c8184612017565b855186906111ab908390612004565b905250505b60006111df856101000151670de0b6b3a76400006111ce9190612017565b606087015160e08801519190611513565b61120d866101400151670de0b6b3a76400006111fb9190612017565b60608801516101208901519190611513565b6112179190612141565b9050600081866000015161122b919061217d565b90508560a001518112156112525760405163aeeb825d60e01b815260040160405180910390fd5b80865260a08601516112649082612017565b9695505050505050565b600061044e8383670de0b6b3a7640000611513565b600061044e83670de0b6b3a764000084611513565b600080670de0b6b3a76400006112ac611531565b6112b6919061219d565b90508083116112c65760006112d0565b6112d08184612017565b915061044e611307670de0b6b3a76400007f000000000000000000000000000000000000000000000000000000000000000061219d565b8390611283565b60008061131b8385612141565b9050600081121561044e57600080fd5b600080806113398585611283565b9050600061134a82868c8a8d611567565b9050600061138b611363670de0b6b3a76400008a611283565b61138161137a8b6113748b8f61126e565b90611595565b869061126e565b6113749085612017565b9050611397898c612017565b6113a18b83612017565b945094505050505b965096945050505050565b60008183116113c3578261044e565b50919050565b6000806113da8888888888886115ec565b9092509050806113fd57604051637ac17d2560e01b815260040160405180910390fd5b509695505050505050565b600080806114168585611283565b9050600061142782868b8a8c611567565b9050600061145c611440670de0b6b3a76400008a611283565b611374611455670de0b6b3a764000087612004565b8590611283565b9050600061146a8288611283565b90506114768b82612017565b611480838c612017565b95509550505050509550959350505050565b60008061149f8484611283565b905060006114b082858b898c611567565b90506114c086611374898b612017565b975060006114ed6114d9670de0b6b3a76400008961168d565b611374856114e78d87612017565b90611283565b90506114f98186611283565b90506115058a82612017565b9a9950505050505050505050565b600082600019048411830215820261152a57600080fd5b5091020490565b600061155d7f0000000000000000000000000000000000000000000000000000000000000000426121b4565b610e909042612017565b60006115738284611595565b61158b61158485611374898961126e565b889061126e565b6112649190612004565b6000816000036115ae5750670de0b6b3a7640000610488565b826000036115be57506000610488565b8160006115ca856116a2565b90508181026115e1670de0b6b3a7640000826121c8565b9050611264816118b6565b600080806115fa8585611283565b9050600061160b82868c8a8d611567565b905061161b876113748a8c612004565b985088811015611633576000809350935050506113a9565b600061165861164a670de0b6b3a76400008a61168d565b611374856114e78e87612017565b90506116648187611283565b9050808b111561167b57611678818c612017565b94505b60019350505050965096945050505050565b600061044e83670de0b6b3a764000084611a41565b6000808212156116c557604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136118d157506000919050565b680755bf798b4a1bf1e582126118fa5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000826000190484118302158202611a5857600080fd5b50910281810615159190040190565b60405180610180016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001611af160405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b600060208284031215611b1757600080fd5b5035919050565b6000815180845260005b81811015611b4457602081850181015186830182015201611b28565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061044e6020830184611b1e565b80356001600160a01b038116811461035f57600080fd5b600080600060608486031215611ba357600080fd5b83359250611bb360208501611b77565b9150611bc160408501611b77565b90509250925092565b60008060408385031215611bdd57600080fd5b82359150611bed60208401611b77565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018091820151918101919091526101a00190565b600060208284031215611c9357600080fd5b61044e82611b77565b81516001600160a01b031681526101c081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151611d0460e08401826001600160a01b03169052565b50610100838101516001600160a01b03811684830152505061012083810151805184830152602081015161014085015260408101516101608501525050610140830151610180830152610160909201516101a09091015290565b60008060208385031215611d7157600080fd5b823567ffffffffffffffff80821115611d8957600080fd5b818501915085601f830112611d9d57600080fd5b813581811115611dac57600080fd5b8660208260051b8501011115611dc157600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611e0b57835183529284019291840191600101611def565b50909695505050505050565b81516001600160801b0316815261016081016020830151611e4360208401826001600160801b03169052565b506040830151611e5e60408401826001600160801b03169052565b506060830151611e7960608401826001600160801b03169052565b506080830151611e9460808401826001600160801b03169052565b5060a0830151611eaf60a08401826001600160801b03169052565b5060c0830151611eca60c08401826001600160801b03169052565b5060e0830151611edf60e0840182600f0b9052565b50610100838101516001600160801b0316908301526101208084015115159083015261014080840151801515828501525b505092915050565b60008060408385031215611f2b57600080fd5b611f3483611b77565b9150611bed60208401611b77565b600060208083526000845481600182811c915080831680611f6457607f831692505b8583108103611f8157634e487b7160e01b85526022600452602485fd5b878601838152602001818015611f9e5760018114611fb457611fdf565b60ff198616825284151560051b82019650611fdf565b60008b81526020902060005b86811015611fd957815484820152908501908901611fc0565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561048857610488611fee565b8181038181111561048857610488611fee565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261206557612065612040565b500490565b634e487b7160e01b600052604160045260246000fd5b60006001820161209257612092611fee565b5060010190565b81546001600160801b038082168352608091821c602084015260018401548082166040850152821c6060840152600284015480821683850152821c60a0840152600384015480821660c0850152821d600f0b60e084015260048401549081166101008401529081901c60ff9081161515610120840152608882901c161515610140830152610160820190610bb9565b60006020828403121561213a57600080fd5b5051919050565b8181036000831280158383131683831282161715610bb957610bb9611fee565b6000600160ff1b820161217657612176611fee565b5060000390565b8082018281126000831280158216821582161715611f1057611f10611fee565b808202811582820484141761048857610488611fee565b6000826121c3576121c3612040565b500690565b6000826121d7576121d7612040565b600160ff1b8214600019841416156121f1576121f1611fee565b50059056fea2646970667358221220ca91bb46601381f3db68d55f73945af77bd82939a8722e03b61f8cb9dd60052264736f6c63430008130033a264697066735822122075449bb1e46606102baf5cd30e0205af6719511b5cc23c54997d54dc53e84ca964736f6c63430008130033", + "sourceMap": "861:3637:10:-:0;;;1714:539;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4843:22:11;;;;;;:28;4829:42;;;;4894:22;;:27;;;4881:40;;4950:22;:33;;;4931:52;;1985:14:10;;2013:9;;2036:14;;2064:15;;565:4:27;-1:-1:-1;5010:35:11;:85;;;565:4:27;5061:10:11;;:34;5010:85;:141;;;;565:4:27;5111:16:11;;:40;5010:141;4993:228;;;5183:27;;-1:-1:-1;;;5183:27:11;;;;;;;;;;;4993:228;5275:11;;5247:19;;;;:25;:39;;:92;;;5329:10;;5302:14;:19;;;:24;;;:37;5247:92;:157;;;;5388:16;;5355:14;:19;;;:30;;;:49;5247:157;5230:241;;;5436:24;;-1:-1:-1;;;5436:24:11;;;;;;;;;;;5230:241;5487:19;;;;5480:26;;:4;:26;;;;;;;;;;;;;;;5574:25;;-1:-1:-1;5561:38:11;;-1:-1:-1;;;;;;5561:38:11;;;-1:-1:-1;;;;;5561:38:11;;;;;;;5632:35;;;;5609:20;:58;;;;;;;;;;;;;5692:27;;;;5677:12;:42;;;;;;;;;;;5747:29;;;;5729:47;;;;:15;;:47;;;:::i;:::-;-1:-1:-1;5803:1:11;5786:18;;5814;:30;;-1:-1:-1;;;;;;5814:30:11;;;-1:-1:-1;;;;;5814:30:11;;;;;;;5854:13;:30;;;;;;;;;;;;;;;5894:14;:32;2144:12:10;::::1;;::::0;-1:-1:-1;2216:30:10;;::::1;::::0;:13:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;;1714:539:::0;;;;;;861:3637;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;861:3637:10;-1:-1:-1;;;;;861:3637:10;;;;;;;;;;;-1:-1:-1;861:3637:10;;;;;;;-1:-1:-1;861:3637:10;;;-1:-1:-1;861:3637:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:158;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:247;213:2;207:9;255:3;243:16;;-1:-1:-1;;;;;274:34:158;;310:22;;;271:62;268:88;;;336:18;;:::i;:::-;372:2;365:22;146:247;:::o;398:131::-;-1:-1:-1;;;;;473:31:158;;463:42;;453:70;;519:1;516;509:12;453:70;398:131;:::o;534:138::-;613:13;;635:31;613:13;635:31;:::i;:::-;534:138;;;:::o;677:525::-;739:5;787:4;775:9;770:3;766:19;762:30;759:50;;;805:1;802;795:12;759:50;838:2;832:9;880:4;868:17;;-1:-1:-1;;;;;900:34:158;;936:22;;;897:62;894:88;;;962:18;;:::i;:::-;1002:10;998:2;991:22;;1031:6;1022:15;;1067:9;1061:16;1053:6;1046:32;1132:2;1121:9;1117:18;1111:25;1106:2;1098:6;1094:15;1087:50;1191:2;1180:9;1176:18;1170:25;1165:2;1157:6;1153:15;1146:50;;677:525;;;;:::o;1207:974::-;1272:5;1325:3;1318:4;1310:6;1306:17;1302:27;1292:55;;1343:1;1340;1333:12;1292:55;1366:13;;1398:4;-1:-1:-1;;;;;1451:10:158;;;1448:36;;;1464:18;;:::i;:::-;1510:2;1507:1;1503:10;1542:2;1536:9;1605:2;1601:7;1596:2;1592;1588:11;1584:25;1576:6;1572:38;1660:6;1648:10;1645:22;1640:2;1628:10;1625:18;1622:46;1619:72;;;1671:18;;:::i;:::-;1707:2;1700:22;1757:18;;;1833:15;;;1829:24;;;1791:15;;;;-1:-1:-1;1865:15:158;;;1862:35;;;1893:1;1890;1883:12;1862:35;1929:2;1921:6;1917:15;1906:26;;1941:210;1957:6;1952:3;1949:15;1941:210;;;2030:3;2024:10;2047:31;2072:5;2047:31;:::i;:::-;2091:18;;2129:12;;;;1974;;;;1941:210;;;2169:6;1207:974;-1:-1:-1;;;;;;;1207:974:158:o;2186:1732::-;2402:6;2410;2418;2426;2434;2442;2495:3;2483:9;2474:7;2470:23;2466:33;2463:53;;;2512:1;2509;2502:12;2463:53;2539:16;;-1:-1:-1;;;;;2604:14:158;;;2601:34;;;2631:1;2628;2621:12;2601:34;2654:22;;;;2710:6;2692:16;;;2688:29;2685:49;;;2730:1;2727;2720:12;2685:49;2756:17;;:::i;:::-;2803:2;2797:9;2815:33;2840:7;2815:33;:::i;:::-;2857:22;;2917:2;2909:11;;2903:18;2930:33;2903:18;2930:33;:::i;:::-;2990:2;2979:14;;2972:31;3035:42;3073:2;3065:11;;3035:42;:::i;:::-;3030:2;3023:5;3019:14;3012:66;3110:55;3157:7;3152:2;3148;3144:11;3110:55;:::i;:::-;3105:2;3098:5;3094:14;3087:79;3200:56;3248:7;3242:3;3238:2;3234:12;3200:56;:::i;:::-;3193:4;3186:5;3182:16;3175:82;3296:3;3292:2;3288:12;3282:19;3326:2;3316:8;3313:16;3310:36;;;3342:1;3339;3332:12;3310:36;3380:67;3439:7;3428:8;3424:2;3420:17;3380:67;:::i;:::-;3373:4;3362:16;;3355:93;-1:-1:-1;3366:5:158;-1:-1:-1;3491:49:158;3536:2;3521:18;;3491:49;:::i;:::-;3481:59;;3559:49;3604:2;3593:9;3589:18;3559:49;:::i;:::-;3549:59;;3648:2;3637:9;3633:18;3627:25;3617:35;;3671:51;3716:4;3705:9;3701:20;3671:51;:::i;:::-;3661:61;;3768:4;3757:9;3753:20;3747:27;3731:43;;3799:2;3789:8;3786:16;3783:36;;;3815:1;3812;3805:12;3783:36;;3838:74;3904:7;3893:8;3882:9;3878:24;3838:74;:::i;:::-;3828:84;;;2186:1732;;;;;;;;:::o;:::-;861:3637:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80635aa6e67511620001065780635aa6e675146200020f5780637613b08c146200023157806377b81aac14620002565780637f7c5a7d14620002965780638522978514620002bd57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635834c76014620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f3d565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f64565b62000509565b348015620001e057600080fd5b506200016d620001f236600462000fde565b62000547565b620001916200020936600462001152565b620005a5565b3480156200021c57600080fd5b5060005462000191906001600160a01b031681565b3480156200023e57600080fd5b506200016d620002503660046200125d565b62000628565b3480156200026357600080fd5b50620002876200027536600462000f3d565b60026020526000908152604090205481565b604051908152602001620001a5565b348015620002a357600080fd5b50620002ae6200070a565b604051620001a5919062001276565b348015620002ca57600080fd5b506200016d620002dc36600462000f3d565b6200076e565b348015620002ef57600080fd5b50620002ae620007f7565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f64565b62000859565b3480156200038b57600080fd5b506200016d6200039d36600462000f3d565b62000892565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200028760065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f3d565b62000905565b3480156200040f57600080fd5b506200016d6200042136600462000f3d565b6200097a565b3480156200043457600080fd5b506200028760015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831617905560018054906000620004cd83620012c5565b90915550506040516001600160a01b038216907f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b0316331462000534576040516282b42960e81b815260040160405180910390fd5b62000542600c838362000e97565b505050565b6000546001600160a01b0316331462000572576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b600080600c8054806020026020016040519081016040528092919081815260200182805480156200060057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620005e1575b50505050509050606081905060006200061c88838888620009ef565b98975050505050505050565b6000546001600160a01b0316331462000653576040516282b42960e81b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081351180620006a657507f00000000000000000000000000000000000000000000000000000000000000008160200135115b80620006d557507f00000000000000000000000000000000000000000000000000000000000000008160400135115b15620006f45760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b8054806020026020016040519081016040528092919081815260200182805480156200076457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000745575b5050505050905090565b6000546001600160a01b0316331462000799576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620007ad57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000764576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000745575050505050905090565b6000546001600160a01b0316331462000884576040516282b42960e81b815260040160405180910390fd5b62000542600b838362000e97565b6000546001600160a01b03163314620008bd576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000930576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b03163314620009a5576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b6000341562000a1157604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b0390811660e08701523060c087015260408051606081018252600754815260085460208201526009549181019190915261010087015260065460055460009262000a6a92899289921662000e2d565b600354600654600554604051633b392fc360e11b81529394506000936001600160a01b03938416936376725f869362000ab0938d938993909116908d90600401620013e0565b6020604051808303816000875af115801562000ad0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af6919062001428565b6001546001600160a01b0380831660009081526002602052604090819020839055600454821660c08c0152600554600654915194955092937fb2df24ce42d3714dd0c39e37e9f9d91fb9b479178d626458aeed80ffd39bd08b9362000b669387938e9392909116918d9062001448565b60405180910390a286516040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000bc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000beb919062001491565b50865160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c66919062001491565b62000c84576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810186905260248101859052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000ce0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d069190620014b5565b5060005b600b5481101562000dbe57816001600160a01b0316637180c8ca600b838154811062000d3a5762000d3a620014cf565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d8f57600080fd5b505af115801562000da4573d6000803e3d6000fd5b50505050808062000db590620012c5565b91505062000d0a565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000e0957600080fd5b505af115801562000e1e573d6000803e3d6000fd5b50929998505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e619062000eff565b62000e709493929190620014e5565b604051809103906000f08015801562000e8d573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000eed579160200282015b8281111562000eed5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000eb8565b5062000efb92915062000f0d565b5090565b6124aa806200151f83390190565b5b8082111562000efb576000815560010162000f0e565b6001600160a01b038116811462000f3a57600080fd5b50565b60006020828403121562000f5057600080fd5b813562000f5d8162000f24565b9392505050565b6000806020838503121562000f7857600080fd5b823567ffffffffffffffff8082111562000f9157600080fd5b818501915085601f83011262000fa657600080fd5b81358181111562000fb657600080fd5b8660208260051b850101111562000fcc57600080fd5b60209290920196919550909350505050565b60006020828403121562000ff157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff8111828210171562001035576200103562000ff8565b60405290565b8035620010488162000f24565b919050565b6000606082840312156200106057600080fd5b6040516060810181811067ffffffffffffffff8211171562001086576200108662000ff8565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f830112620010bf57600080fd5b8135602067ffffffffffffffff80831115620010df57620010df62000ff8565b8260051b604051601f19603f8301168101818110848211171562001107576200110762000ff8565b6040529384528581018301938381019250878511156200112657600080fd5b83870191505b8482101562001147578135835291830191908301906200112c565b979650505050505050565b6000806000808486036102008112156200116b57600080fd5b6101a0808212156200117c57600080fd5b620011866200100e565b915062001193876200103b565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a0830152620011d560c088016200103b565b60c0830152620011e860e088016200103b565b60e0830152610100620011fe89828a016200104d565b9083015261016087013561012083015261018087013561014083015290945085013567ffffffffffffffff8111156200123657600080fd5b6200124487828801620010ad565b94979496505050506101c0830135926101e00135919050565b6000606082840312156200127057600080fd5b50919050565b6020808252825182820181905260009190848201906040850190845b81811015620012b95783516001600160a01b03168352928401929184019160010162001292565b50909695505050505050565b600060018201620012e657634e487b7160e01b600052601160045260246000fd5b5060010190565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c08101516200134760c08401826001600160a01b03169052565b5060e08101516200136360e08401826001600160a01b03169052565b5061010081810151805184830152602081015161012085015260408101516101408501525050610120810151610160830152610140015161018090910152565b600081518084526020808501945080840160005b83811015620013d557815187529582019590820190600101620013b7565b509495945050505050565b6000610220620013f18389620012ed565b6001600160a01b038781166101a08501526101c0840187905285166101e084015261020083018190526200061c81840185620013a3565b6000602082840312156200143b57600080fd5b815162000f5d8162000f24565b6001600160a01b038681168252600090610220906200146b6020850189620012ed565b8087166101c085015250846101e0840152806102008401526200061c81840185620013a3565b600060208284031215620014a457600080fd5b8151801515811462000f5d57600080fd5b600060208284031215620014c857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102008101620014f68287620012ed565b6101a08201949094526001600160a01b039283166101c082015291166101e09091015291905056fe61024060405260016000553480156200001757600080fd5b50604051620024aa380380620024aa8339810160408190526200003a91620002b0565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b6040810151610160526080810151600003620000b257604051635428734d60e01b815260040160405180910390fd5b60808101805160e0525160608201511080620000e2575080608001518160600151620000df9190620003ab565b15155b15620001015760405163253fffcf60e11b815260040160405180910390fd5b606081015161010090815260a08201516101205260208201516101405260c0820151601180546001600160a01b0319166001600160a01b0392831617905560e0830151166101e05281015151670de0b6b3a76400001080620001735750670de0b6b3a764000081610100015160200151115b806200018f5750670de0b6b3a764000081610100015160400151115b15620001ae576040516322f72cc360e11b815260040160405180910390fd5b6101008101805151610180528051602001516101a05251604001516101c0526101400151610200525050506001600160a01b03166102205250620003ce915050565b60405161016081016001600160401b03811182821017156200022257634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024057600080fd5b919050565b6000606082840312156200025857600080fd5b604051606081016001600160401b03811182821017156200028957634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610200811215620002c957600080fd5b6101a080821215620002da57600080fd5b620002e4620001f0565b9150620002f18762000228565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a08301526200033360c0880162000228565b60c08301526200034660e0880162000228565b60e08301526101006200035c89828a0162000245565b9083015261016087015161012083015261018087015161014083015286015190945092506200038f6101c0860162000228565b9150620003a06101e0860162000228565b905092959194509250565b600082620003c957634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161022051612003620004a7600039600081816103370152610d4001526000610a2b0152600061097c015260006109f4015260006109cf015260006109ac0152600081816108d70152610e6d0152600081816108ad0152610e4701526000818161094c0152610e930152600081816108fc01526111c901526000818161092601526113c10152600081816108880152610b9801526000610beb01526000610b5801526120036000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c8063b0d96580116100ad578063c69e16ad11610071578063c69e16ad1461028d578063c905a4b514610295578063cc962f8e1461029d578063d8165743146102c0578063e985e9c5146102d557600080fd5b8063b0d9658014610235578063bd85b0391461024a578063becee9c31461025d578063c45a01551461027d578063c55dae631461028557600080fd5b80633656eec2116100f45780633656eec2146101d45780634e41a1fb146101e757806360246c88146101fa5780637ecebe001461020f578063afdac68d1461022257600080fd5b8062ad800c1461012557806316f0115b1461014e57806320fc48811461016e57806321ff32a9146101b3575b600080fd5b61013861013336600461191f565b6102e8565b604051610145919061197e565b60405180910390f35b610156610329565b6040516001600160a01b039091168152602001610145565b61018161017c36600461191f565b61036c565b6040805182516001600160801b0390811682526020808501518216908301529282015190921690820152606001610145565b6101c66101c13660046119a8565b6103d8565b604051908152602001610145565b6101c66101e23660046119e4565b61041e565b6101386101f536600461191f565b610457565b61020261047f565b6040516101459190611a10565b6101c661021d366004611a90565b610647565b6101c661023036600461191f565b610673565b61023d61086b565b6040516101459190611aab565b6101c661025836600461191f565b610a61565b61027061026b366004611b67565b610a83565b6040516101459190611bdc565b610156610b4a565b610156610b8a565b6101c6610bca565b6101c6610be4565b6102b06102ab366004611a90565b610c1c565b6040519015158152602001610145565b6102c8610c52565b6040516101459190611c20565b6102b06102e3366004611d13565b610cb8565b6060610324600560008481526020019081526020016000206040516020016103109190611d3d565b604051602081830303815290604052610cfc565b919050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103699101610310565b90565b6040805160608101825260008082526020820181905291810191909152610324600e6000848152602001908152602001600020604051602001610310919081546001600160801b03808216835260809190911c6020830152600190920154909116604082015260600190565b60008381526004602090815260408083206001600160a01b03868116855290835281842090851684528252808320548151928301526104179101610310565b9392505050565b60008281526001602090815260408083206001600160a01b03851684528252808320548151928301526104519101610310565b92915050565b6060610324600660008481526020019081526020016000206040516020016103109190611d3d565b6104e36040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006104ed610d20565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105589190611dff565b6105629190611e12565b905060006105818361057b61057686610db8565b610f25565b90611154565b60408051610180810182526008546001600160801b038082168352600160801b9182900481166020840152928201869052606082018790526009548084166080840152600a54841660a0840152819004831660c0830152600b5480841660e08401528190048316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106245761061f8486611169565b610627565b60005b8152509050610640816040516020016103109190611a10565b5050505090565b6001600160a01b0381166000908152600760209081526040808320548151928301526103249101610310565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106106a5576106a5611e25565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b03169082015291506106e68685611e12565b905060008315610700576106fb600185611e12565b61070f565b60125461070f90600190611e12565b60408051808201909152600080825260208201529091505b8482146107be5760006012838154811061074357610743611e25565b6000918252602090912001805490915063ffffffff1684106107915760408051808201909152905463ffffffff8116825264010000000090046001600160e01b0316602082015290506107be565b82156107a7576107a2600184611e12565b6107b6565b6012546107b690600190611e12565b925050610727565b805163ffffffff166000036107e657604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b031661080e9190611e12565b8251865191925060009161082b9163ffffffff9081169116611e12565b905061085e61084c61084583670de0b6b3a7640000611e3b565b8490611169565b60405160200161031091815260200190565b5050505050505050919050565b610873611888565b60408051610160810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a0850152601154831660c08501527f000000000000000000000000000000000000000000000000000000000000000090921660e0840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101008301919091526012546101208301527f0000000000000000000000000000000000000000000000000000000000000000610140830152915161036992610310929101611aab565b6000818152600260209081526040808320548151928301526103249101610310565b606060008267ffffffffffffffff811115610aa057610aa0611e52565b604051908082528060200260200182016040528015610ac9578160200160208202803683370190505b50905060005b83811015610b2e576000858583818110610aeb57610aeb611e25565b90506020020135905060008154905080848481518110610b0d57610b0d611e25565b60200260200101818152505050508080610b2690611e68565b915050610acf565b50610b43816040516020016103109190611bdc565b5092915050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103699101610310565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103699101610310565b600061036960105460405160200161031091815260200190565b60006103697f000000000000000000000000000000000000000000000000000000000000000060405160200161031091815260200190565b6001600160a01b0381166000908152601460209081526040808320549051610324926103109260ff169101901515815260200190565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915261036960086040516020016103109190611e81565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff90911615159181019190915290916104519101610310565b80604051636e64089360e11b8152600401610d17919061197e565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db39190611f00565b905090565b610e1560405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600160801b909104811660208301529181018490527f000000000000000000000000000000000000000000000000000000000000000060608201527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a0820152600954821660c0820152600a54909160e0830191610ed5911661117e565b81526009546001600160801b03600160801b90910481166020830152600b54604090920191610f04911661117e565b8152600b54600160801b90046001600160801b031660209091015292915050565b600080610f4583610120015184610100015161115490919063ffffffff16565b60e084015160c0850151610f5891611154565b610f629190611f19565b90506000811315610fc057610fa98360000151846020015183610f9a8760a00151670de0b6b3a76400006111f490919063ffffffff16565b87604001518860600151611222565b83518490610fb8908390611e12565b9052506110c5565b60008112156110c5576000610fff846000015185602001518660a00151670de0b6b3a7640000610ff09190611e12565b876040015188606001516112b3565b915050808261100d90611f39565b11156110195780611022565b61102282611f39565b905080156110795761106684600001518560200151836110578860a00151670de0b6b3a76400006111f490919063ffffffff16565b8860400151896060015161133d565b84518590611075908390611dff565b9052505b6110b18161108684611f39565b6110909190611e12565b60408601516101008701516110a491611154565b610140870151919061139c565b845185906110c0908390611dff565b905250505b60006110f38460e00151670de0b6b3a76400006110e29190611e12565b604086015160c0870151919061139c565b611121856101200151670de0b6b3a764000061110f9190611e12565b6040870151610100880151919061139c565b61112b9190611f19565b845190915061113b908290611f55565b808552608085015161114c91611e12565b949350505050565b60006104178383670de0b6b3a764000061139c565b600061041783670de0b6b3a76400008461139c565b600080670de0b6b3a76400006111926113ba565b61119c9190611e3b565b90508083116111ac5760006111b6565b6111b68184611e12565b91506104176111ed670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000611e3b565b8390611169565b6000828211156112165760405162d6e85160e61b815260040160405180910390fd5b600061114c8385611e12565b60008061122f8484611169565b9050600061124082858b898c6113f0565b9050611256866112508a8a611427565b90611457565b9750600061128361126f670de0b6b3a7640000896114ae565b6112508561127d868e6111f4565b90611169565b905061128f8186611169565b9050808a11156112a6576112a3818b611e12565b93505b5050509695505050505050565b600080806112c18585611169565b905060006112d282868b8a8c6113f0565b905060006113076112eb670de0b6b3a76400008a611169565b611250611300670de0b6b3a764000087611dff565b8590611169565b905060006113158288611169565b90506113218b82611e12565b61132b838c611e12565b95509550505050509550959350505050565b60008061134a8484611169565b9050600061135b82858b898c6113f0565b905061136b866112508a8a6111f4565b9750600061138461126f670de0b6b3a7640000896114ae565b90506113908186611169565b90506112a3818b6111f4565b60008260001904841183021582026113b357600080fd5b5091020490565b60006113e67f000000000000000000000000000000000000000000000000000000000000000042611f8b565b610db39042611e12565b600061141d6113ff8385611457565b611417611410866112508a8a611154565b8990611154565b90611427565b9695505050505050565b6000806114348385611dff565b90508381101561041757604051632d59cfbd60e01b815260040160405180910390fd5b6000816000036114705750670de0b6b3a7640000610451565b8260000361148057506000610451565b81600061148c856114c3565b90508181026114a3670de0b6b3a764000082611f9f565b905061141d816116d7565b600061041783670de0b6b3a764000084611862565b6000808212156114e657604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136116f257506000919050565b680755bf798b4a1bf1e5821261171b5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600082600019048411830215820261187957600080fd5b50910281810615159190040190565b60405180610160016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200161190b60405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b60006020828403121561193157600080fd5b5035919050565b6000815180845260005b8181101561195e57602081850181015186830182015201611942565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104176020830184611938565b80356001600160a01b038116811461032457600080fd5b6000806000606084860312156119bd57600080fd5b833592506119cd60208501611991565b91506119db60408501611991565b90509250925092565b600080604083850312156119f757600080fd5b82359150611a0760208401611991565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e0808301519082015261010080830151908201526101208083015190820152610140808301519082015261016091820151918101919091526101800190565b600060208284031215611aa257600080fd5b61041782611991565b81516001600160a01b031681526101a081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151611b0960c08401826001600160a01b03169052565b5060e0830151611b2460e08401826001600160a01b03169052565b5061010083810151805184830152602081015161012085015260408101516101408501525050610120830151610160830152610140909201516101809091015290565b60008060208385031215611b7a57600080fd5b823567ffffffffffffffff80821115611b9257600080fd5b818501915085601f830112611ba657600080fd5b813581811115611bb557600080fd5b8660208260051b8501011115611bca57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c1457835183529284019291840191600101611bf8565b50909695505050505050565b81516001600160801b0316815261014081016020830151611c4c60208401826001600160801b03169052565b506040830151611c6760408401826001600160801b03169052565b506060830151611c8260608401826001600160801b03169052565b506080830151611c9d60808401826001600160801b03169052565b5060a0830151611cb860a08401826001600160801b03169052565b5060c0830151611cd360c08401826001600160801b03169052565b5060e0830151611cee60e08401826001600160801b03169052565b506101008381015115159083015261012080840151801515828501525b505092915050565b60008060408385031215611d2657600080fd5b611d2f83611991565b9150611a0760208401611991565b600060208083526000845481600182811c915080831680611d5f57607f831692505b8583108103611d7c57634e487b7160e01b85526022600452602485fd5b878601838152602001818015611d995760018114611daf57611dda565b60ff198616825284151560051b82019650611dda565b60008b81526020902060005b86811015611dd457815484820152908501908901611dbb565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561045157610451611de9565b8181038181111561045157610451611de9565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761045157610451611de9565b634e487b7160e01b600052604160045260246000fd5b600060018201611e7a57611e7a611de9565b5060010190565b81546001600160801b038082168352608091821c602084015260018401548082166040850152821c6060840152600284015480821683850152821c60a0840152600384015490811660c0840152901c60e0820152600482015460ff8082161515610100840152600882901c161515610120830152610140820190610b43565b600060208284031215611f1257600080fd5b5051919050565b8181036000831280158383131683831282161715610b4357610b43611de9565b6000600160ff1b8201611f4e57611f4e611de9565b5060000390565b8082018281126000831280158216821582161715611d0b57611d0b611de9565b634e487b7160e01b600052601260045260246000fd5b600082611f9a57611f9a611f75565b500690565b600082611fae57611fae611f75565b600160ff1b821460001984141615611fc857611fc8611de9565b50059056fea2646970667358221220095af892fb19cb2e90f09dfae2f69f9fd449a73c6263ae6116508236a3ebb47764736f6c63430008130033a2646970667358221220f38fa8fcdb7017acef10d9f8c792c60a2d02b9b8d6f6d9ee73ade3d3880428d964736f6c63430008130033", - "sourceMap": "861:3637:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:362:11;;;;;;;;;;-1:-1:-1;6248:362:11;;;;;:::i;:::-;;:::i;:::-;;2383:45;;;;;;;;;;-1:-1:-1;2383:45:11;;;;-1:-1:-1;;;;;2383:45:11;;;;;;-1:-1:-1;;;;;794:32:156;;;776:51;;764:2;749:18;2383:45:11;;;;;;;;2418:148:10;;;;;;;;;;-1:-1:-1;2418:148:10;;;;;:::i;:::-;;:::i;7866:195:11:-;;;;;;;;;;-1:-1:-1;7866:195:11;;;;;:::i;:::-;;:::i;2795:751:10:-;;;;;;:::i;:::-;;:::i;1982:25:11:-;;;;;;;;;;-1:-1:-1;1982:25:11;;;;-1:-1:-1;;;;;1982:25:11;;;8558:328;;;;;;;;;;-1:-1:-1;8558:328:11;;;;;:::i;:::-;;:::i;2255:62::-;;;;;;;;;;-1:-1:-1;2255:62:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6191:25:156;;;6179:2;6164:18;2255:62:11;6045:177:156;13099:109:11;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7410:236::-;;;;;;;;;;-1:-1:-1;7410:236:11;;;;;:::i;:::-;;:::i;4391:105:10:-;;;;;;;;;;;;;:::i;2627:28:11:-;;;;;;;;;;-1:-1:-1;2627:28:11;;;;-1:-1:-1;;;;;2627:28:11;;;2846;;;;;;;;;;-1:-1:-1;2846:28:11;;;;;;;;;;;;;;;;7092:25:156;;;7148:2;7133:18;;7126:34;;;;7176:18;;;7169:34;7080:2;7065:18;2846:28:11;6890:319:156;9022:203:11;;;;;;;;;;-1:-1:-1;9022:203:11;;;;;:::i;:::-;;:::i;6738:157::-;;;;;;;;;;-1:-1:-1;6738:157:11;;;;;:::i;:::-;;:::i;2953:27::-;;;;;;;;;;-1:-1:-1;2953:27:11;;;;-1:-1:-1;;;;;2953:27:11;;;2737:29;;;;;;;;;;;;;;;;8198:169;;;;;;;;;;-1:-1:-1;8198:169:11;;;;;:::i;:::-;;:::i;7055:231::-;;;;;;;;;;-1:-1:-1;7055:231:11;;;;;:::i;:::-;;:::i;2091:29::-;;;;;;;;;;;;;;;;2512:35;;;;;;;;;;-1:-1:-1;2512:35:11;;;;-1:-1:-1;;;;;2512:35:11;;;6248:362;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;-1:-1:-1;;;;;6399:34:11;::::1;6391:43;;;::::0;::::1;;6444:18;:32:::0;;-1:-1:-1;;;;;;6444:32:11::1;-1:-1:-1::0;;;;;6444:32:11;::::1;;::::0;;-1:-1:-1;6528:16:11;;;-1:-1:-1;6528:16:11::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;6560:43:11::1;::::0;-1:-1:-1;;;;;6560:43:11;::::1;::::0;::::1;::::0;;;::::1;6248:362:::0;:::o;2418:148:10:-;6056:10:11;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;2529:30:10::1;:13;2545:14:::0;;2529:30:::1;:::i;:::-;;2418:148:::0;;:::o;7866:195:11:-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;7969:14:::1;:32:::0;;;8016:38:::1;::::0;7986:15;;8016:38:::1;::::0;;;::::1;7866:195:::0;:::o;2795:751:10:-;2989:11;3143:30;3176:13;3143:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3143:46:10;;;;;;;;;;;;;;;;;;;;;;;3199:26;3287:13;3274:26;;3319:22;3344:124;3383:7;3404:9;3427:13;3454:4;3344:25;:124::i;:::-;3319:149;2795:751;-1:-1:-1;;;;;;;;2795:751:10:o;8558:328:11:-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;8690:11:::1;8676::::0;::::1;:25;::::0;:64:::1;;;8730:10;8717:5;:10;;;:23;8676:64;:115;;;;8775:16;8756:5;:16;;;:35;8676:115;8659:199;;;8823:24;;-1:-1:-1::0;;;8823:24:11::1;;;;;;;;;;;8659:199;7777:19:156::0;;8867:4:11::1;7764:33:156::0;7851:2;7840:14;;7827:28;7813:12;7806:50;7910:2;7899:14;7886:28;7872:12;7865:50;2418:148:10:o;13099:109:11:-;13151:16;13186:15;13179:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13179:22:11;;;;;;;;;;;;;;;;;;;;;;;13099:109;:::o;7410:236::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;-1:-1:-1;;;;;7519:28:11;::::1;7511:37;;;::::0;::::1;;7558:13;:30:::0;;-1:-1:-1;;;;;;7558:30:11::1;-1:-1:-1::0;;;;;7558:30:11;::::1;::::0;;::::1;::::0;;;7603:36:::1;::::0;::::1;::::0;-1:-1:-1;;7603:36:11::1;7410:236:::0;:::o;4391:105:10:-;4441:16;4476:13;4469:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4469:20:10;;;;;;;;;;;;;;;;;;;;;;4391:105;:::o;9022:203:11:-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;9184:34:::1;:15;9202:16:::0;;9184:34:::1;:::i;6738:157::-:0;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;6819:10:::1;:24:::0;;-1:-1:-1;;;;;;6819:24:11::1;-1:-1:-1::0;;;;;6819:24:11;::::1;::::0;;::::1;::::0;;6858:30:::1;::::0;6819:24;;6858:30:::1;::::0;::::1;6738:157:::0;:::o;8198:169::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;8283:12:::1;:28:::0;;-1:-1:-1;;;;;;8283:28:11::1;-1:-1:-1::0;;;;;8283:28:11;::::1;::::0;;::::1;::::0;;;8326:34:::1;::::0;::::1;::::0;-1:-1:-1;;8326:34:11::1;8198:169:::0;:::o;7055:231::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;7170:20:::1;:44:::0;;-1:-1:-1;;;;;;7170:44:11::1;-1:-1:-1::0;;;;;7170:44:11;::::1;::::0;;::::1;::::0;;;7229:50:::1;::::0;::::1;::::0;-1:-1:-1;;7229:50:11::1;7055:231:::0;:::o;9777:2333::-;9981:11;10008:9;:13;10004:89;;10044:38;;-1:-1:-1;;;10044:38:11;;;;;;;;;;;10004:89;10553:12;;-1:-1:-1;;;;;10553:12:11;;;10530:20;;;:35;10604:4;10575:18;;;:34;10619:19;;;;;;;;10634:4;10619:19;;;;;-1:-1:-1;10619:19:11;;;;;;;;;;;;10553:12;10619;;:19;10748:14;;10776:13;;10553:12;;10671:128;;10530:7;;10724:10;;10776:13;10671:18;:128::i;:::-;10859:18;;10957:14;;10989:13;;10859:185;;-1:-1:-1;;;10859:185:11;;10648:151;;-1:-1:-1;10809:22:11;;-1:-1:-1;;;;;10859:18:11;;;;:25;;:185;;10902:7;;10648:151;;10989:13;;;;11020:10;;10859:185;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11098:14;;-1:-1:-1;;;;;11064:31:11;;;;;;;:10;:31;;;;;;;:48;;;11143:20;;;;11122:18;;;:41;11282:13;;11309:14;;11178:179;;10809:245;;-1:-1:-1;11098:14:11;;11178:179;;;;10809:245;;11122:7;;11282:13;;;;;11337:10;;11178:179;:::i;:::-;;;;;;;;11415:17;;:118;;-1:-1:-1;;;11415:118:11;;11459:10;11415:118;;;11443:34:156;11491:4:11;11493:18:156;;;11486:43;11545:18;;;11538:34;;;-1:-1:-1;;;;;11415:30:11;;;;;;11378:18:156;;11415:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11561:17:11;;:65;;-1:-1:-1;;;11561:65:11;;-1:-1:-1;;;;;12057:32:156;;;11561:65:11;;;12039:51:156;-1:-1:-1;;12106:18:156;;;12099:34;11561:25:11;;;;;;12012:18:156;;11561:65:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11543:154;;11658:28;;-1:-1:-1;;;11658:28:11;;;;;;;;;;;11543:154;11706:60;;-1:-1:-1;;;11706:60:11;;;;;12369:25:156;;;12410:18;;;12403:34;;;11749:10:11;12453:18:156;;;12446:60;11761:4:11;12522:18:156;;;12515:50;-1:-1:-1;;;;;11706:21:11;;;;;12341:19:156;;11706:60:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11901:9;11896:124;11920:15;:22;11916:26;;11896:124;;;11963:10;-1:-1:-1;;;;;11963:20:11;;11984:15;12000:1;11984:18;;;;;;;;:::i;:::-;;;;;;;;;;;11963:46;;;;;;-1:-1:-1;;;;;;11963:46:11;;;-1:-1:-1;;;;;11984:18:11;;;11963:46;;;13065:51:156;11984:18:11;13132::156;;;13125:50;13038:18;;11963:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11944:3;;;;;:::i;:::-;;;;11896:124;;;-1:-1:-1;12054:20:11;;;12029:46;;-1:-1:-1;;;12029:46:11;;-1:-1:-1;;;;;12054:20:11;;;12029:46;;;776:51:156;;;;12029:24:11;;;;;749:18:156;;12029:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12093:10:11;;9777:2333;-1:-1:-1;;;;;;;;;9777:2333:11:o;3846:464:10:-;4045:7;4155;4184:15;4221:14;4257:4;4110:169;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4064:239:10;3846:464;-1:-1:-1;;;;;3846:464:10:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:152:156;-1:-1:-1;;;;;110:31:156;;100:42;;90:70;;156:1;153;146:12;90:70;14:152;:::o;171:296::-;258:6;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;385:52;431:5;385:52;:::i;:::-;456:5;171:296;-1:-1:-1;;;171:296:156:o;838:615::-;924:6;932;985:2;973:9;964:7;960:23;956:32;953:52;;;1001:1;998;991:12;953:52;1041:9;1028:23;1070:18;1111:2;1103:6;1100:14;1097:34;;;1127:1;1124;1117:12;1097:34;1165:6;1154:9;1150:22;1140:32;;1210:7;1203:4;1199:2;1195:13;1191:27;1181:55;;1232:1;1229;1222:12;1181:55;1272:2;1259:16;1298:2;1290:6;1287:14;1284:34;;;1314:1;1311;1304:12;1284:34;1367:7;1362:2;1352:6;1349:1;1345:14;1341:2;1337:23;1333:32;1330:45;1327:65;;;1388:1;1385;1378:12;1327:65;1419:2;1411:11;;;;;1441:6;;-1:-1:-1;838:615:156;;-1:-1:-1;;;;838:615:156:o;1458:180::-;1517:6;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;-1:-1:-1;1609:23:156;;1458:180;-1:-1:-1;1458:180:156:o;1643:127::-;1704:10;1699:3;1695:20;1692:1;1685:31;1735:4;1732:1;1725:15;1759:4;1756:1;1749:15;1775:250;1842:2;1836:9;1884:6;1872:19;;1921:18;1906:34;;1942:22;;;1903:62;1900:88;;;1968:18;;:::i;:::-;2004:2;1997:22;1775:250;:::o;2030:163::-;2106:20;;2135:52;2106:20;2135:52;:::i;:::-;2030:163;;;:::o;2198:535::-;2249:5;2297:4;2285:9;2280:3;2276:19;2272:30;2269:50;;;2315:1;2312;2305:12;2269:50;2348:2;2342:9;2390:4;2382:6;2378:17;2461:6;2449:10;2446:22;2425:18;2413:10;2410:34;2407:62;2404:88;;;2472:18;;:::i;:::-;2512:10;2508:2;2501:22;;2541:6;2532:15;;2584:9;2571:23;2563:6;2556:39;2656:2;2645:9;2641:18;2628:32;2623:2;2615:6;2611:15;2604:57;2722:2;2711:9;2707:18;2694:32;2689:2;2681:6;2677:15;2670:57;;2198:535;;;;:::o;2738:902::-;2792:5;2845:3;2838:4;2830:6;2826:17;2822:27;2812:55;;2863:1;2860;2853:12;2812:55;2899:6;2886:20;2925:4;2948:18;2985:2;2981;2978:10;2975:36;;;2991:18;;:::i;:::-;3037:2;3034:1;3030:10;3069:2;3063:9;3132:2;3128:7;3123:2;3119;3115:11;3111:25;3103:6;3099:38;3187:6;3175:10;3172:22;3167:2;3155:10;3152:18;3149:46;3146:72;;;3198:18;;:::i;:::-;3234:2;3227:22;3284:18;;;3360:15;;;3356:24;;;3318:15;;;;-1:-1:-1;3392:15:156;;;3389:35;;;3420:1;3417;3410:12;3389:35;3456:2;3448:6;3444:15;3433:26;;3468:142;3484:6;3479:3;3476:15;3468:142;;;3550:17;;3538:30;;3588:12;;;;3501;;;;3468:142;;;3628:6;2738:902;-1:-1:-1;;;;;;;2738:902:156:o;3645:1491::-;3784:6;3792;3800;3808;3852:9;3843:7;3839:23;3882:3;3878:2;3874:12;3871:32;;;3899:1;3896;3889:12;3871:32;3922:6;3948:2;3944;3940:11;3937:31;;;3964:1;3961;3954:12;3937:31;3990:17;;:::i;:::-;3977:30;;4030:37;4057:9;4030:37;:::i;:::-;4023:5;4016:52;4128:2;4117:9;4113:18;4100:32;4095:2;4088:5;4084:14;4077:56;4193:2;4182:9;4178:18;4165:32;4160:2;4153:5;4149:14;4142:56;4258:2;4247:9;4243:18;4230:32;4225:2;4218:5;4214:14;4207:56;4324:3;4313:9;4309:19;4296:33;4290:3;4283:5;4279:15;4272:58;4391:3;4380:9;4376:19;4363:33;4357:3;4350:5;4346:15;4339:58;4430:47;4472:3;4461:9;4457:19;4430:47;:::i;:::-;4424:3;4417:5;4413:15;4406:72;4511:47;4553:3;4542:9;4538:19;4511:47;:::i;:::-;4505:3;4498:5;4494:15;4487:72;4578:3;4613:51;4656:7;4651:2;4640:9;4636:18;4613:51;:::i;:::-;4597:14;;;4590:75;4729:6;4714:22;;4701:36;4692:6;4681:18;;4674:64;4802:3;4787:19;;4774:33;4765:6;4754:18;;4747:61;4601:5;;-1:-1:-1;4868:18:156;;4855:32;4910:18;4899:30;;4896:50;;;4942:1;4939;4932:12;4896:50;4965:61;5018:7;5009:6;4998:9;4994:22;4965:61;:::i;:::-;3645:1491;;4955:71;;-1:-1:-1;;;;5073:3:156;5058:19;;5045:33;;5125:3;5110:19;5097:33;;3645:1491;-1:-1:-1;3645:1491:156:o;5577:190::-;5660:6;5713:2;5701:9;5692:7;5688:23;5684:32;5681:52;;;5729:1;5726;5719:12;5681:52;-1:-1:-1;5752:9:156;5577:190;-1:-1:-1;5577:190:156:o;6227:658::-;6398:2;6450:21;;;6520:13;;6423:18;;;6542:22;;;6369:4;;6398:2;6621:15;;;;6595:2;6580:18;;;6369:4;6664:195;6678:6;6675:1;6672:13;6664:195;;;6743:13;;-1:-1:-1;;;;;6739:39:156;6727:52;;6834:15;;;;6799:12;;;;6775:1;6693:9;6664:195;;;-1:-1:-1;6876:3:156;;6227:658;-1:-1:-1;;;;;;6227:658:156:o;7396:232::-;7435:3;7456:17;;;7453:140;;7515:10;7510:3;7506:20;7503:1;7496:31;7550:4;7547:1;7540:15;7578:4;7575:1;7568:15;7453:140;-1:-1:-1;7620:1:156;7609:13;;7396:232::o;8132:930::-;8236:12;;-1:-1:-1;;;;;559:31:156;547:44;;8303:4;8296:5;8292:16;8286:23;8279:4;8274:3;8270:14;8263:47;8359:4;8352:5;8348:16;8342:23;8335:4;8330:3;8326:14;8319:47;8415:4;8408:5;8404:16;8398:23;8391:4;8386:3;8382:14;8375:47;8471:4;8464:5;8460:16;8454:23;8447:4;8442:3;8438:14;8431:47;8527:4;8520:5;8516:16;8510:23;8503:4;8498:3;8494:14;8487:47;8580:4;8573:5;8569:16;8563:23;8595:69;8658:4;8653:3;8649:14;8635:12;-1:-1:-1;;;;;559:31:156;547:44;;472:125;8595:69;;8712:4;8705:5;8701:16;8695:23;8727:71;8792:4;8787:3;8783:14;8767;-1:-1:-1;;;;;559:31:156;547:44;;472:125;8727:71;-1:-1:-1;8817:6:156;8860:14;;;8854:21;7996:12;;8923;;;7984:25;8058:4;8047:16;;8041:23;8025:14;;;8018:47;8114:4;8103:16;;8097:23;8081:14;;;8074:47;-1:-1:-1;;8987:6:156;8976:18;;8970:25;8961:6;8952:16;;8945:51;9047:6;9036:18;9030:25;9021:6;9012:16;;;9005:51;8132:930::o;9067:435::-;9120:3;9158:5;9152:12;9185:6;9180:3;9173:19;9211:4;9240:2;9235:3;9231:12;9224:19;;9277:2;9270:5;9266:14;9298:1;9308:169;9322:6;9319:1;9316:13;9308:169;;;9383:13;;9371:26;;9417:12;;;;9452:15;;;;9344:1;9337:9;9308:169;;;-1:-1:-1;9493:3:156;;9067:435;-1:-1:-1;;;;;9067:435:156:o;9507:705::-;9817:4;9846:3;9858:47;9895:9;9887:6;9858:47;:::i;:::-;-1:-1:-1;;;;;9980:15:156;;;9974:3;9959:19;;9952:44;10027:3;10012:19;;10005:35;;;10077:15;;10071:3;10056:19;;10049:44;10124:3;10109:19;;10102:31;;;10150:56;10187:18;;;10179:6;10150:56;:::i;10217:272::-;10287:6;10340:2;10328:9;10319:7;10315:23;10311:32;10308:52;;;10356:1;10353;10346:12;10308:52;10388:9;10382:16;10407:52;10453:5;10407:52;:::i;10494:704::-;-1:-1:-1;;;;;10901:15:156;;;10883:34;;10804:4;;10833:3;;10926:56;10978:2;10963:18;;10955:6;10926:56;:::i;:::-;11031:2;11023:6;11019:15;11013:3;11002:9;10998:19;10991:44;;11072:6;11066:3;11055:9;11051:19;11044:35;11116:2;11110:3;11099:9;11095:19;11088:31;11136:56;11188:2;11177:9;11173:18;11165:6;11136:56;:::i;11583:277::-;11650:6;11703:2;11691:9;11682:7;11678:23;11674:32;11671:52;;;11719:1;11716;11709:12;11671:52;11751:9;11745:16;11804:5;11797:13;11790:21;11783:5;11780:32;11770:60;;11826:1;11823;11816:12;12576:184;12646:6;12699:2;12687:9;12678:7;12674:23;12670:32;12667:52;;;12715:1;12712;12705:12;12667:52;-1:-1:-1;12738:16:156;;12576:184;-1:-1:-1;12576:184:156:o;12765:127::-;12826:10;12821:3;12817:20;12814:1;12807:31;12857:4;12854:1;12847:15;12881:4;12878:1;12871:15;13186:545;13477:3;13462:19;;13490:47;13466:9;13519:6;13490:47;:::i;:::-;13568:3;13553:19;;13546:35;;;;-1:-1:-1;;;;;13656:15:156;;;13650:3;13635:19;;13628:44;13709:15;;13703:3;13688:19;;;13681:44;13186:545;;-1:-1:-1;13186:545:156:o", + "object": "0x608060405260043610620001435760003560e01c806394ad46d911620000b9578063c415b95c1162000078578063c415b95c14620003a3578063c905a4b514620003c5578063d2c35ce814620003dd578063dd2b8fbb1462000402578063dd6d30c11462000427578063e3331555146200043f57600080fd5b806394ad46d914620002e257806399623bb114620002fa5780639af1d35a146200031c5780639af252621462000359578063b2561263146200037e57600080fd5b80637613b08c11620001065780637613b08c146200021a57806377b81aac146200023f5780637f7c5a7d146200027f5780638522978514620002a65780638927f4e914620002cb57600080fd5b8063025b22bc146200014857806303a5aa92146200016f57806309b9075f14620001ae5780634fbfee7714620001d35780635aa6e67514620001f8575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462000f3e565b62000461565b005b3480156200017c57600080fd5b5060035462000191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001bb57600080fd5b506200016d620001cd36600462000f65565b62000509565b348015620001e057600080fd5b506200016d620001f236600462000fdf565b62000547565b3480156200020557600080fd5b5060005462000191906001600160a01b031681565b3480156200022757600080fd5b506200016d6200023936600462000ff9565b620005a5565b3480156200024c57600080fd5b50620002706200025e36600462000f3e565b60026020526000908152604090205481565b604051908152602001620001a5565b3480156200028c57600080fd5b506200029762000687565b604051620001a5919062001024565b348015620002b357600080fd5b506200016d620002c536600462000f3e565b620006eb565b62000191620002dc366004620011bb565b62000774565b348015620002ef57600080fd5b5062000297620007f7565b3480156200030757600080fd5b5060055462000191906001600160a01b031681565b3480156200032957600080fd5b506007546008546009546200033d92919083565b60408051938452602084019290925290820152606001620001a5565b3480156200036657600080fd5b506200016d6200037836600462000f65565b62000859565b3480156200038b57600080fd5b506200016d6200039d36600462000f3e565b62000892565b348015620003b057600080fd5b50600a5462000191906001600160a01b031681565b348015620003d257600080fd5b506200027060065481565b348015620003ea57600080fd5b506200016d620003fc36600462000f3e565b62000905565b3480156200040f57600080fd5b506200016d6200042136600462000f3e565b6200097a565b3480156200043457600080fd5b506200027060015481565b3480156200044c57600080fd5b5060045462000191906001600160a01b031681565b6000546001600160a01b031633146200048c576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116620004a057600080fd5b600380546001600160a01b0319166001600160a01b03831617905560018054906000620004cd83620012d1565b90915550506040516001600160a01b038216907f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0390600090a250565b6000546001600160a01b0316331462000534576040516282b42960e81b815260040160405180910390fd5b62000542600c838362000e98565b505050565b6000546001600160a01b0316331462000572576040516282b42960e81b815260040160405180910390fd5b600681905560405181907f395a61259037298d1c4cd4bf177b64ad5995d38a9394573fcd9060d649314ad090600090a250565b6000546001600160a01b03163314620005d0576040516282b42960e81b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000813511806200062357507f00000000000000000000000000000000000000000000000000000000000000008160200135115b806200065257507f00000000000000000000000000000000000000000000000000000000000000008160400135115b15620006715760405163cd4e616760e01b815260040160405180910390fd5b8035600755602081013560085560400135600955565b6060600b805480602002602001604051908101604052809291908181526020018280548015620006e157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620006c2575b5050505050905090565b6000546001600160a01b0316331462000716576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166200072a57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040517f03aa5b0fb65014eea89fda04a7bc11742014881f3c078f2c75b7226ce10d941890600090a250565b600080600c805480602002602001604051908101604052809291908181526020018280548015620007cf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620007b0575b5050505050905060608190506000620007eb88838888620009ef565b98975050505050505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620006e1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620006c2575050505050905090565b6000546001600160a01b0316331462000884576040516282b42960e81b815260040160405180910390fd5b62000542600b838362000e98565b6000546001600160a01b03163314620008bd576040516282b42960e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b038316908117825560405190917f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab91a250565b6000546001600160a01b0316331462000930576040516282b42960e81b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f90600090a250565b6000546001600160a01b03163314620009a5576040516282b42960e81b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517ff3e07b4bb4394f2ff320bd1dd151551dff304d5e948b401d8558b228482c97d890600090a250565b6000341562000a1157604051638fbc3bd960e01b815260040160405180910390fd5b600a546001600160a01b039081166101008701523060e087015260408051606081018252600754815260085460208201526009549181019190915261012087015260065460055460009262000a6b92899289921662000e2e565b60035460065460055460405163e3420f4f60e01b81529394506000936001600160a01b039384169363e3420f4f9362000ab1938d938993909116908d90600401620013f1565b6020604051808303816000875af115801562000ad1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af7919062001439565b6001546001600160a01b0380831660009081526002602052604090819020839055600454821660e08c0152600554600654915194955092937fc6f4867fb04085fae8d5bc8a6eb6bd83992441fe62b92acc3710f0cedf0e753a9362000b679387938e9392909116918d9062001459565b60405180910390a286516040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801562000bc6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bec9190620014a2565b50865160405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000c41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c679190620014a2565b62000c85576040516340b27c2160e11b815260040160405180910390fd5b604051632002b33360e01b81526004810186905260248101859052336044820152600160648201526001600160a01b03821690632002b333906084016020604051808303816000875af115801562000ce1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d079190620014c6565b5060005b600b5481101562000dbf57816001600160a01b0316637180c8ca600b838154811062000d3b5762000d3b620014e0565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260016024820152604401600060405180830381600087803b15801562000d9057600080fd5b505af115801562000da5573d6000803e3d6000fd5b50505050808062000db690620012d1565b91505062000d0b565b506004805460405163ab033ea960e01b81526001600160a01b039182169281019290925282169063ab033ea990602401600060405180830381600087803b15801562000e0a57600080fd5b505af115801562000e1f573d6000803e3d6000fd5b50929998505050505050505050565b60008483837f000000000000000000000000000000000000000000000000000000000000000060405162000e629062000f00565b62000e719493929190620014f6565b604051809103906000f08015801562000e8e573d6000803e3d6000fd5b5095945050505050565b82805482825590600052602060002090810192821562000eee579160200282015b8281111562000eee5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019062000eb9565b5062000efc92915062000f0e565b5090565b6126f5806200153083390190565b5b8082111562000efc576000815560010162000f0f565b6001600160a01b038116811462000f3b57600080fd5b50565b60006020828403121562000f5157600080fd5b813562000f5e8162000f25565b9392505050565b6000806020838503121562000f7957600080fd5b823567ffffffffffffffff8082111562000f9257600080fd5b818501915085601f83011262000fa757600080fd5b81358181111562000fb757600080fd5b8660208260051b850101111562000fcd57600080fd5b60209290920196919550909350505050565b60006020828403121562000ff257600080fd5b5035919050565b6000606082840312156200100c57600080fd5b50919050565b80356200101f8162000f25565b919050565b6020808252825182820181905260009190848201906040850190845b81811015620010675783516001600160a01b03168352928401929184019160010162001040565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715620010b057620010b062001073565b60405290565b600060608284031215620010c957600080fd5b6040516060810181811067ffffffffffffffff82111715620010ef57620010ef62001073565b80604052508091508235815260208301356020820152604083013560408201525092915050565b600082601f8301126200112857600080fd5b8135602067ffffffffffffffff8083111562001148576200114862001073565b8260051b604051601f19603f8301168101818110848211171562001170576200117062001073565b6040529384528581018301938381019250878511156200118f57600080fd5b83870191505b84821015620011b05781358352918301919083019062001195565b979650505050505050565b600080600080848603610220811215620011d457600080fd5b6101c080821215620011e557600080fd5b620011ef62001089565b9150620011fc8762001012565b82526020870135602083015260408701356040830152606087013560608301526080870135608083015260a087013560a083015260c087013560c08301526200124860e0880162001012565b60e08301526101006200125d81890162001012565b908301526101206200127289898301620010b6565b908301526101808701356101408301526101a087013561016083015290945085013567ffffffffffffffff811115620012aa57600080fd5b620012b88782880162001116565b94979496505050506101e0830135926102000135919050565b600060018201620012f257634e487b7160e01b600052601160045260246000fd5b5060010190565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e08101516200135d60e08401826001600160a01b03169052565b50610100818101516001600160a01b0381168483015250506101208181015180518483015260208101516101408501526040810151610160850152505061014081015161018083015261016001516101a090910152565b600081518084526020808501945080840160005b83811015620013e657815187529582019590820190600101620013c8565b509495945050505050565b6000610240620014028389620012f9565b6001600160a01b038781166101c08501526101e0840187905285166102008401526102208301819052620007eb81840185620013b4565b6000602082840312156200144c57600080fd5b815162000f5e8162000f25565b6001600160a01b038681168252600090610240906200147c6020850189620012f9565b8087166101e0850152508461020084015280610220840152620007eb81840185620013b4565b600060208284031215620014b557600080fd5b8151801515811462000f5e57600080fd5b600060208284031215620014d957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6102208101620015078287620012f9565b6101c08201949094526001600160a01b039283166101e082015291166102009091015291905056fe61026060405260016000553480156200001757600080fd5b50604051620026f5380380620026f58339810160408190526200003a91620002bc565b6001600160a01b0380831660805260a084905284511660c052604084015184908490849083906103e8111562000083576040516349db44f560e01b815260040160405180910390fd5b60408101516101605260608101516101805260a0810151600003620000bb57604051635428734d60e01b815260040160405180910390fd5b60a08101805160e0525160808201511080620000eb57508060a001518160800151620000e89190620003c2565b15155b156200010a5760405163253fffcf60e11b815260040160405180910390fd5b608081015161010090815260c082015161012090815260208301516101405260e0830151601180546001600160a01b0319166001600160a01b03928316179055918301519091166102005281015151670de0b6b3a764000010806200017f5750670de0b6b3a764000081610120015160200151115b806200019b5750670de0b6b3a764000081610120015160400151115b15620001ba576040516322f72cc360e11b815260040160405180910390fd5b61012081018051516101a0528051602001516101c05251604001516101e0526101600151610220525050506001600160a01b03166102405250620003e5915050565b60405161018081016001600160401b03811182821017156200022e57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200024c57600080fd5b919050565b6000606082840312156200026457600080fd5b604051606081016001600160401b03811182821017156200029557634e487b7160e01b600052604160045260246000fd5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080848603610220811215620002d557600080fd5b6101c080821215620002e657600080fd5b620002f0620001fc565b9150620002fd8762000234565b82526020870151602083015260408701516040830152606087015160608301526080870151608083015260a087015160a083015260c087015160c08301526200034960e0880162000234565b60e08301526101006200035e81890162000234565b90830152610120620003738989830162000251565b908301526101808701516101408301526101a08701516101608301528601519094509250620003a66101e0860162000234565b9150620003b7610200860162000234565b905092959194509250565b600082620003e057634e487b7160e01b600052601260045260246000fd5b500690565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161222c620004c9600039600081816103720152610e1d01526000610aa1015260006109f101526000610a6a01526000610a4501526000610a220152600061094b0152600081816109260152610f5c0152600081816108fc0152610f360152600081816109c10152610f8201526000818161097501526112e301526000818161099b01526115380152600081816108d70152610c0e01526000610c6101526000610bce015261222c6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063bd85b039116100ad578063c905a4b511610071578063c905a4b5146102a1578063cc962f8e146102a9578063d8165743146102cc578063e985e9c5146102e1578063fba56008146102f457600080fd5b8063bd85b03914610256578063becee9c314610269578063c45a015514610289578063c55dae6314610291578063c69e16ad1461029957600080fd5b80634e41a1fb116100f45780634e41a1fb146101f357806360246c88146102065780637ecebe001461021b578063afdac68d1461022e578063b0d965801461024157600080fd5b8062ad800c1461013057806316f0115b1461015957806320fc48811461017957806321ff32a9146101bf5780633656eec2146101e0575b600080fd5b61014361013e366004611b05565b610323565b6040516101509190611b64565b60405180910390f35b610161610364565b6040516001600160a01b039091168152602001610150565b61018c610187366004611b05565b6103a7565b6040805182516001600160801b0390811682526020808501519091169082015291810151600f0b90820152606001610150565b6101d26101cd366004611b8e565b61040f565b604051908152602001610150565b6101d26101ee366004611bca565b610455565b610143610201366004611b05565b61048e565b61020e6104b6565b6040516101509190611bf6565b6101d2610229366004611c81565b6106a8565b6101d261023c366004611b05565b6106d4565b6102496108ba565b6040516101509190611c9c565b6101d2610264366004611b05565b610ad7565b61027c610277366004611d5e565b610af9565b6040516101509190611dd3565b610161610bc0565b610161610c00565b6101d2610c40565b6101d2610c5a565b6102bc6102b7366004611c81565b610c92565b6040519015158152602001610150565b6102d4610cc8565b6040516101509190611e17565b6102bc6102ef366004611f18565b610d36565b6102fc610d7a565b6040805182516001600160801b039081168252602093840151169281019290925201610150565b606061035f6005600084815260200190815260200160002060405160200161034b9190611f42565b604051602081830303815290604052610dd9565b919050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103a4910161034b565b90565b604080516060810182526000808252602082018190529181019190915261035f600e600084815260200190815260200160002060405160200161034b919081546001600160801b038116825260801c6020820152600190910154600f0b604082015260600190565b60008381526004602090815260408083206001600160a01b038681168552908352818420908516845282528083205481519283015261044e910161034b565b9392505050565b60008281526001602090815260408083206001600160a01b0385168452825280832054815192830152610488910161034b565b92915050565b606061035f6006600084815260200190815260200160002060405160200161034b9190611f42565b610521604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061052b610dfd565b600d5460026020527f3ccfbaf375b4885450e3887dab0704e32e03acfeaf0442976372f6750e322c1f5460008080527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54939450926001600160801b03909216916105969190612004565b6105a09190612017565b905060008083116105b25760006105cd565b6105cd836105c76105c286610e95565b610ffc565b9061126e565b604080516101a0810182526008546001600160801b038082168352600b54600160801b808204600f0b602086015292839004821694840194909452606083018790526080830188905260095480821660a0850152600a54821660c0850152829004811660e0840152928316610100830152600d5480841661012084015204909116610140820152909150600090610160810184156106745761066f8486611283565b610677565b60005b8152600c546001600160801b03166020918201526040519192506106a19161034b91849101611bf6565b5050505090565b6001600160a01b03811660009081526007602090815260408083205481519283015261035f910161034b565b601354601280546000926001600160801b03600160801b8204811693911691849190839081106107065761070661202a565b600091825260208083206040805180820190915292015463ffffffff8116835264010000000090046001600160e01b03169082015291506107478685612017565b9050600083156107615761075c600185612017565b610770565b60125461077090600190612017565b60408051808201909152600080825260208201529091505b84821461081f576000601283815481106107a4576107a461202a565b6000918252602090912001805490915063ffffffff1684106107f25760408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152905061081f565b821561080857610803600184612017565b610817565b60125461081790600190612017565b925050610788565b805163ffffffff1660000361084757604051630a89817b60e41b815260040160405180910390fd5b600081602001516001600160e01b031685602001516001600160e01b031661086f9190612017565b8251865191925060009161088c9163ffffffff9081169116612017565b90506108ad61089b8284612056565b60405160200161034b91815260200190565b5050505050505050919050565b6108c2611a67565b60408051610180810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000006020808401919091527f0000000000000000000000000000000000000000000000000000000000000000838501527f00000000000000000000000000000000000000000000000000000000000000006060808501919091527f000000000000000000000000000000000000000000000000000000000000000060808501527f000000000000000000000000000000000000000000000000000000000000000060a08501527f000000000000000000000000000000000000000000000000000000000000000060c0850152601154831660e08501527f0000000000000000000000000000000000000000000000000000000000000000909216610100840152835191820184527f000000000000000000000000000000000000000000000000000000000000000082527f0000000000000000000000000000000000000000000000000000000000000000828201527f0000000000000000000000000000000000000000000000000000000000000000828501526101208301919091526012546101408301527f000000000000000000000000000000000000000000000000000000000000000061016083015291516103a49261034b929101611c9c565b60008181526002602090815260408083205481519283015261035f910161034b565b606060008267ffffffffffffffff811115610b1657610b1661206a565b604051908082528060200260200182016040528015610b3f578160200160208202803683370190505b50905060005b83811015610ba4576000858583818110610b6157610b6161202a565b90506020020135905060008154905080848481518110610b8357610b8361202a565b60200260200101818152505050508080610b9c90612080565b915050610b45565b50610bb98160405160200161034b9190611dd3565b5092915050565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103a4910161034b565b604080516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000916103a4910161034b565b60006103a460105460405160200161034b91815260200190565b60006103a47f000000000000000000000000000000000000000000000000000000000000000060405160200161034b91815260200190565b6001600160a01b038116600090815260146020908152604080832054905161035f9261034b9260ff169101901515815260200190565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526103a4600860405160200161034b9190612099565b6001600160a01b038281166000908152600360209081526040808320938516835292815282822054835160ff9091161515918101919091529091610488910161034b565b6040805180820190915260008082526020820152604080518082018252600d546001600160801b03808216808452600160801b90920481166020938401908152845193840192909252905116918101919091526103a49060600161034b565b80604051636e64089360e11b8152600401610df49190611b64565b60405180910390fd5b6040516303d1689d60e11b8152670de0b6b3a764000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90602401602060405180830381865afa158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e909190612128565b905090565b610ef260405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610160810182526008546001600160801b038082168352600b54600160801b90819004600f0b6020850152909104811692820192909252606081018490527f000000000000000000000000000000000000000000000000000000000000000060808201527f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c0820152600954821660e0820152600a549091610100830191610fc59116611298565b81526009546001600160801b03600160801b90910481166020830152600b54604090920191610ff49116611298565b905292915050565b60008061101c83610140015184610120015161126e90919063ffffffff16565b61010084015160e08501516110309161126e565b61103a9190612141565b905060006110508460000151856020015161130e565b905060008213156110f25760006110928286604001518760a001518860c00151670de0b6b3a76400006110839190612017565b89606001518a6080015161132b565b91506110a0905081846113b4565b905080156110ec576110d9828660400151838860c00151670de0b6b3a76400006110ca9190612017565b89606001518a608001516113c9565b855186906110e8908390612017565b9052505b506111b0565b60008212156111b05761110482612161565b915060006111388286604001518760c00151670de0b6b3a76400006111299190612017565b88606001518960800151611408565b9150611146905081846113b4565b905080156111925761117f828660400151838860c00151670de0b6b3a76400006111709190612017565b89606001518a60800151611492565b8551869061118e908390612004565b9052505b61119c8184612017565b855186906111ab908390612004565b905250505b60006111df856101000151670de0b6b3a76400006111ce9190612017565b606087015160e08801519190611513565b61120d866101400151670de0b6b3a76400006111fb9190612017565b60608801516101208901519190611513565b6112179190612141565b9050600081866000015161122b919061217d565b90508560a001518112156112525760405163aeeb825d60e01b815260040160405180910390fd5b80865260a08601516112649082612017565b9695505050505050565b600061044e8383670de0b6b3a7640000611513565b600061044e83670de0b6b3a764000084611513565b600080670de0b6b3a76400006112ac611531565b6112b6919061219d565b90508083116112c65760006112d0565b6112d08184612017565b915061044e611307670de0b6b3a76400007f000000000000000000000000000000000000000000000000000000000000000061219d565b8390611283565b60008061131b8385612141565b9050600081121561044e57600080fd5b600080806113398585611283565b9050600061134a82868c8a8d611567565b9050600061138b611363670de0b6b3a76400008a611283565b61138161137a8b6113748b8f61126e565b90611595565b869061126e565b6113749085612017565b9050611397898c612017565b6113a18b83612017565b945094505050505b965096945050505050565b60008183116113c3578261044e565b50919050565b6000806113da8888888888886115ec565b9092509050806113fd57604051637ac17d2560e01b815260040160405180910390fd5b509695505050505050565b600080806114168585611283565b9050600061142782868b8a8c611567565b9050600061145c611440670de0b6b3a76400008a611283565b611374611455670de0b6b3a764000087612004565b8590611283565b9050600061146a8288611283565b90506114768b82612017565b611480838c612017565b95509550505050509550959350505050565b60008061149f8484611283565b905060006114b082858b898c611567565b90506114c086611374898b612017565b975060006114ed6114d9670de0b6b3a76400008961168d565b611374856114e78d87612017565b90611283565b90506114f98186611283565b90506115058a82612017565b9a9950505050505050505050565b600082600019048411830215820261152a57600080fd5b5091020490565b600061155d7f0000000000000000000000000000000000000000000000000000000000000000426121b4565b610e909042612017565b60006115738284611595565b61158b61158485611374898961126e565b889061126e565b6112649190612004565b6000816000036115ae5750670de0b6b3a7640000610488565b826000036115be57506000610488565b8160006115ca856116a2565b90508181026115e1670de0b6b3a7640000826121c8565b9050611264816118b6565b600080806115fa8585611283565b9050600061160b82868c8a8d611567565b905061161b876113748a8c612004565b985088811015611633576000809350935050506113a9565b600061165861164a670de0b6b3a76400008a61168d565b611374856114e78e87612017565b90506116648187611283565b9050808b111561167b57611678818c612017565b94505b60019350505050965096945050505050565b600061044e83670de0b6b3a764000084611a41565b6000808212156116c557604051632c7949f560e01b815260040160405180910390fd5b5060606001600160801b03821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110600190811b90911783811c90911017609f81810383019390931b90921c6c465772b2bbbb5f824b15207a3081018102821d6d0388eaa27412d5aca026815d636e018102821d6d0df99ac502031bf953eff472fdcc018102821d6d13cdffb29d51d99322bdff5f2211018102821d6d0a0f742023def783a307a986912e018102821d6d01920d8043ca89b5239253284e42018102821d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7882018202831d6d0139601a2efabe717e604cbb4894018202831d6d02247f7a7b6594320649aa03aba1018202831d6c8c3f38e95a6b1ff2ab1c3b343619018202831d6d02384773bdf1ac5676facced60901901820290921d6cb9a025d814b29c212b8b1a07cd190102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a550602605f19919091017d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b6000680248ce36a70cb26b3e1982136118d157506000919050565b680755bf798b4a1bf1e582126118fa5760405163df92cc9d60e01b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000826000190484118302158202611a5857600080fd5b50910281810615159190040190565b60405180610180016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001611af160405180606001604052806000815260200160008152602001600081525090565b815260200160008152602001600081525090565b600060208284031215611b1757600080fd5b5035919050565b6000815180845260005b81811015611b4457602081850181015186830182015201611b28565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061044e6020830184611b1e565b80356001600160a01b038116811461035f57600080fd5b600080600060608486031215611ba357600080fd5b83359250611bb360208501611b77565b9150611bc160408501611b77565b90509250925092565b60008060408385031215611bdd57600080fd5b82359150611bed60208401611b77565b90509250929050565b815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018091820151918101919091526101a00190565b600060208284031215611c9357600080fd5b61044e82611b77565b81516001600160a01b031681526101c081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e0830151611d0460e08401826001600160a01b03169052565b50610100838101516001600160a01b03811684830152505061012083810151805184830152602081015161014085015260408101516101608501525050610140830151610180830152610160909201516101a09091015290565b60008060208385031215611d7157600080fd5b823567ffffffffffffffff80821115611d8957600080fd5b818501915085601f830112611d9d57600080fd5b813581811115611dac57600080fd5b8660208260051b8501011115611dc157600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611e0b57835183529284019291840191600101611def565b50909695505050505050565b81516001600160801b0316815261016081016020830151611e4360208401826001600160801b03169052565b506040830151611e5e60408401826001600160801b03169052565b506060830151611e7960608401826001600160801b03169052565b506080830151611e9460808401826001600160801b03169052565b5060a0830151611eaf60a08401826001600160801b03169052565b5060c0830151611eca60c08401826001600160801b03169052565b5060e0830151611edf60e0840182600f0b9052565b50610100838101516001600160801b0316908301526101208084015115159083015261014080840151801515828501525b505092915050565b60008060408385031215611f2b57600080fd5b611f3483611b77565b9150611bed60208401611b77565b600060208083526000845481600182811c915080831680611f6457607f831692505b8583108103611f8157634e487b7160e01b85526022600452602485fd5b878601838152602001818015611f9e5760018114611fb457611fdf565b60ff198616825284151560051b82019650611fdf565b60008b81526020902060005b86811015611fd957815484820152908501908901611fc0565b83019750505b50949998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561048857610488611fee565b8181038181111561048857610488611fee565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261206557612065612040565b500490565b634e487b7160e01b600052604160045260246000fd5b60006001820161209257612092611fee565b5060010190565b81546001600160801b038082168352608091821c602084015260018401548082166040850152821c6060840152600284015480821683850152821c60a0840152600384015480821660c0850152821d600f0b60e084015260048401549081166101008401529081901c60ff9081161515610120840152608882901c161515610140830152610160820190610bb9565b60006020828403121561213a57600080fd5b5051919050565b8181036000831280158383131683831282161715610bb957610bb9611fee565b6000600160ff1b820161217657612176611fee565b5060000390565b8082018281126000831280158216821582161715611f1057611f10611fee565b808202811582820484141761048857610488611fee565b6000826121c3576121c3612040565b500690565b6000826121d7576121d7612040565b600160ff1b8214600019841416156121f1576121f1611fee565b50059056fea2646970667358221220ca91bb46601381f3db68d55f73945af77bd82939a8722e03b61f8cb9dd60052264736f6c63430008130033a264697066735822122075449bb1e46606102baf5cd30e0205af6719511b5cc23c54997d54dc53e84ca964736f6c63430008130033", + "sourceMap": "861:3637:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:362:11;;;;;;;;;;-1:-1:-1;6248:362:11;;;;;:::i;:::-;;:::i;:::-;;2383:45;;;;;;;;;;-1:-1:-1;2383:45:11;;;;-1:-1:-1;;;;;2383:45:11;;;;;;-1:-1:-1;;;;;794:32:158;;;776:51;;764:2;749:18;2383:45:11;;;;;;;;2418:148:10;;;;;;;;;;-1:-1:-1;2418:148:10;;;;;:::i;:::-;;:::i;7866:195:11:-;;;;;;;;;;-1:-1:-1;7866:195:11;;;;;:::i;:::-;;:::i;1982:25::-;;;;;;;;;;-1:-1:-1;1982:25:11;;;;-1:-1:-1;;;;;1982:25:11;;;8558:328;;;;;;;;;;-1:-1:-1;8558:328:11;;;;;:::i;:::-;;:::i;2255:62::-;;;;;;;;;;-1:-1:-1;2255:62:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2625:25:158;;;2613:2;2598:18;2255:62:11;2479:177:158;13099:109:11;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7410:236::-;;;;;;;;;;-1:-1:-1;7410:236:11;;;;;:::i;:::-;;:::i;2795:751:10:-;;;;;;:::i;:::-;;:::i;4391:105::-;;;;;;;;;;;;;:::i;2627:28:11:-;;;;;;;;;;-1:-1:-1;2627:28:11;;;;-1:-1:-1;;;;;2627:28:11;;;2846;;;;;;;;;;-1:-1:-1;2846:28:11;;;;;;;;;;;;;;;;7147:25:158;;;7203:2;7188:18;;7181:34;;;;7231:18;;;7224:34;7135:2;7120:18;2846:28:11;6945:319:158;9022:203:11;;;;;;;;;;-1:-1:-1;9022:203:11;;;;;:::i;:::-;;:::i;6738:157::-;;;;;;;;;;-1:-1:-1;6738:157:11;;;;;:::i;:::-;;:::i;2953:27::-;;;;;;;;;;-1:-1:-1;2953:27:11;;;;-1:-1:-1;;;;;2953:27:11;;;2737:29;;;;;;;;;;;;;;;;8198:169;;;;;;;;;;-1:-1:-1;8198:169:11;;;;;:::i;:::-;;:::i;7055:231::-;;;;;;;;;;-1:-1:-1;7055:231:11;;;;;:::i;:::-;;:::i;2091:29::-;;;;;;;;;;;;;;;;2512:35;;;;;;;;;;-1:-1:-1;2512:35:11;;;;-1:-1:-1;;;;;2512:35:11;;;6248:362;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;-1:-1:-1;;;;;6399:34:11;::::1;6391:43;;;::::0;::::1;;6444:18;:32:::0;;-1:-1:-1;;;;;;6444:32:11::1;-1:-1:-1::0;;;;;6444:32:11;::::1;;::::0;;-1:-1:-1;6528:16:11;;;-1:-1:-1;6528:16:11::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;6560:43:11::1;::::0;-1:-1:-1;;;;;6560:43:11;::::1;::::0;::::1;::::0;;;::::1;6248:362:::0;:::o;2418:148:10:-;6056:10:11;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;2529:30:10::1;:13;2545:14:::0;;2529:30:::1;:::i;:::-;;2418:148:::0;;:::o;7866:195:11:-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;7969:14:::1;:32:::0;;;8016:38:::1;::::0;7986:15;;8016:38:::1;::::0;;;::::1;7866:195:::0;:::o;8558:328::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;8690:11:::1;8676::::0;::::1;:25;::::0;:64:::1;;;8730:10;8717:5;:10;;;:23;8676:64;:115;;;;8775:16;8756:5;:16;;;:35;8676:115;8659:199;;;8823:24;;-1:-1:-1::0;;;8823:24:11::1;;;;;;;;;;;8659:199;7832:19:158::0;;8867:4:11::1;7819:33:158::0;7906:2;7895:14;;7882:28;7868:12;7861:50;7965:2;7954:14;7941:28;7927:12;7920:50;2418:148:10:o;13099:109:11:-;13151:16;13186:15;13179:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13179:22:11;;;;;;;;;;;;;;;;;;;;;;;13099:109;:::o;7410:236::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;-1:-1:-1;;;;;7519:28:11;::::1;7511:37;;;::::0;::::1;;7558:13;:30:::0;;-1:-1:-1;;;;;;7558:30:11::1;-1:-1:-1::0;;;;;7558:30:11;::::1;::::0;;::::1;::::0;;;7603:36:::1;::::0;::::1;::::0;-1:-1:-1;;7603:36:11::1;7410:236:::0;:::o;2795:751:10:-;2989:11;3143:30;3176:13;3143:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3143:46:10;;;;;;;;;;;;;;;;;;;;;;;3199:26;3287:13;3274:26;;3319:22;3344:124;3383:7;3404:9;3427:13;3454:4;3344:25;:124::i;:::-;3319:149;2795:751;-1:-1:-1;;;;;;;;2795:751:10:o;4391:105::-;4441:16;4476:13;4469:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4469:20:10;;;;;;;;;;;;;;;;;;;;;;4391:105;:::o;9022:203:11:-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;9184:34:::1;:15;9202:16:::0;;9184:34:::1;:::i;6738:157::-:0;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;6819:10:::1;:24:::0;;-1:-1:-1;;;;;;6819:24:11::1;-1:-1:-1::0;;;;;6819:24:11;::::1;::::0;;::::1;::::0;;6858:30:::1;::::0;6819:24;;6858:30:::1;::::0;::::1;6738:157:::0;:::o;8198:169::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;8283:12:::1;:28:::0;;-1:-1:-1;;;;;;8283:28:11::1;-1:-1:-1::0;;;;;8283:28:11;::::1;::::0;;::::1;::::0;;;8326:34:::1;::::0;::::1;::::0;-1:-1:-1;;8326:34:11::1;8198:169:::0;:::o;7055:231::-;6056:10;;-1:-1:-1;;;;;6056:10:11;6042;:24;6038:63;;6075:26;;-1:-1:-1;;;6075:26:11;;;;;;;;;;;6038:63;7170:20:::1;:44:::0;;-1:-1:-1;;;;;;7170:44:11::1;-1:-1:-1::0;;;;;7170:44:11;::::1;::::0;;::::1;::::0;;;7229:50:::1;::::0;::::1;::::0;-1:-1:-1;;7229:50:11::1;7055:231:::0;:::o;9777:2333::-;9981:11;10008:9;:13;10004:89;;10044:38;;-1:-1:-1;;;10044:38:11;;;;;;;;;;;10004:89;10553:12;;-1:-1:-1;;;;;10553:12:11;;;;10530:20;;:35;10604:4;10575:18;;;:34;10619:19;;;;;;;;10634:4;10619:19;;;;;-1:-1:-1;10619:19:11;;;;;;;;;;;;:12;;;:19;10748:14;;10776:13;;10553:12;;10671:128;;10530:7;;10724:10;;10776:13;10671:18;:128::i;:::-;10859:18;;10957:14;;10989:13;;10859:185;;-1:-1:-1;;;10859:185:11;;10648:151;;-1:-1:-1;10809:22:11;;-1:-1:-1;;;;;10859:18:11;;;;:25;;:185;;10902:7;;10648:151;;10989:13;;;;11020:10;;10859:185;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11098:14;;-1:-1:-1;;;;;11064:31:11;;;;;;;:10;:31;;;;;;;:48;;;11143:20;;;;11122:18;;;:41;11282:13;;11309:14;;11178:179;;10809:245;;-1:-1:-1;11098:14:11;;11178:179;;;;10809:245;;11122:7;;11282:13;;;;;11337:10;;11178:179;:::i;:::-;;;;;;;;11415:17;;:118;;-1:-1:-1;;;11415:118:11;;11459:10;11415:118;;;11575:34:158;11491:4:11;11625:18:158;;;11618:43;11677:18;;;11670:34;;;-1:-1:-1;;;;;11415:30:11;;;;;;11510:18:158;;11415:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11561:17:11;;:65;;-1:-1:-1;;;11561:65:11;;-1:-1:-1;;;;;12189:32:158;;;11561:65:11;;;12171:51:158;-1:-1:-1;;12238:18:158;;;12231:34;11561:25:11;;;;;;12144:18:158;;11561:65:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11543:154;;11658:28;;-1:-1:-1;;;11658:28:11;;;;;;;;;;;11543:154;11706:60;;-1:-1:-1;;;11706:60:11;;;;;12501:25:158;;;12542:18;;;12535:34;;;11749:10:11;12585:18:158;;;12578:60;11761:4:11;12654:18:158;;;12647:50;-1:-1:-1;;;;;11706:21:11;;;;;12473:19:158;;11706:60:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11901:9;11896:124;11920:15;:22;11916:26;;11896:124;;;11963:10;-1:-1:-1;;;;;11963:20:11;;11984:15;12000:1;11984:18;;;;;;;;:::i;:::-;;;;;;;;;;;11963:46;;;;;;-1:-1:-1;;;;;;11963:46:11;;;-1:-1:-1;;;;;11984:18:11;;;11963:46;;;13197:51:158;11984:18:11;13264::158;;;13257:50;13170:18;;11963:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11944:3;;;;;:::i;:::-;;;;11896:124;;;-1:-1:-1;12054:20:11;;;12029:46;;-1:-1:-1;;;12029:46:11;;-1:-1:-1;;;;;12054:20:11;;;12029:46;;;776:51:158;;;;12029:24:11;;;;;749:18:158;;12029:46:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12093:10:11;;9777:2333;-1:-1:-1;;;;;;;;;9777:2333:11:o;3846:464:10:-;4045:7;4155;4184:15;4221:14;4257:4;4110:169;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4064:239:10;3846:464;-1:-1:-1;;;;;3846:464:10:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:152:158;-1:-1:-1;;;;;110:31:158;;100:42;;90:70;;156:1;153;146:12;90:70;14:152;:::o;171:296::-;258:6;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;385:52;431:5;385:52;:::i;:::-;456:5;171:296;-1:-1:-1;;;171:296:158:o;838:615::-;924:6;932;985:2;973:9;964:7;960:23;956:32;953:52;;;1001:1;998;991:12;953:52;1041:9;1028:23;1070:18;1111:2;1103:6;1100:14;1097:34;;;1127:1;1124;1117:12;1097:34;1165:6;1154:9;1150:22;1140:32;;1210:7;1203:4;1199:2;1195:13;1191:27;1181:55;;1232:1;1229;1222:12;1181:55;1272:2;1259:16;1298:2;1290:6;1287:14;1284:34;;;1314:1;1311;1304:12;1284:34;1367:7;1362:2;1352:6;1349:1;1345:14;1341:2;1337:23;1333:32;1330:45;1327:65;;;1388:1;1385;1378:12;1327:65;1419:2;1411:11;;;;;1441:6;;-1:-1:-1;838:615:158;;-1:-1:-1;;;;838:615:158:o;1458:180::-;1517:6;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;-1:-1:-1;1609:23:158;;1458:180;-1:-1:-1;1458:180:158:o;1851:190::-;1934:6;1987:2;1975:9;1966:7;1962:23;1958:32;1955:52;;;2003:1;2000;1993:12;1955:52;-1:-1:-1;2026:9:158;1851:190;-1:-1:-1;1851:190:158:o;2046:155::-;2114:20;;2143:52;2114:20;2143:52;:::i;:::-;2046:155;;;:::o;2661:658::-;2832:2;2884:21;;;2954:13;;2857:18;;;2976:22;;;2803:4;;2832:2;3055:15;;;;3029:2;3014:18;;;2803:4;3098:195;3112:6;3109:1;3106:13;3098:195;;;3177:13;;-1:-1:-1;;;;;3173:39:158;3161:52;;3268:15;;;;3233:12;;;;3209:1;3127:9;3098:195;;;-1:-1:-1;3310:3:158;;2661:658;-1:-1:-1;;;;;;2661:658:158:o;3324:127::-;3385:10;3380:3;3376:20;3373:1;3366:31;3416:4;3413:1;3406:15;3440:4;3437:1;3430:15;3456:250;3523:2;3517:9;3565:6;3553:19;;3602:18;3587:34;;3623:22;;;3584:62;3581:88;;;3649:18;;:::i;:::-;3685:2;3678:22;3456:250;:::o;3711:535::-;3762:5;3810:4;3798:9;3793:3;3789:19;3785:30;3782:50;;;3828:1;3825;3818:12;3782:50;3861:2;3855:9;3903:4;3895:6;3891:17;3974:6;3962:10;3959:22;3938:18;3926:10;3923:34;3920:62;3917:88;;;3985:18;;:::i;:::-;4025:10;4021:2;4014:22;;4054:6;4045:15;;4097:9;4084:23;4076:6;4069:39;4169:2;4158:9;4154:18;4141:32;4136:2;4128:6;4124:15;4117:57;4235:2;4224:9;4220:18;4207:32;4202:2;4194:6;4190:15;4183:57;;3711:535;;;;:::o;4251:902::-;4305:5;4358:3;4351:4;4343:6;4339:17;4335:27;4325:55;;4376:1;4373;4366:12;4325:55;4412:6;4399:20;4438:4;4461:18;4498:2;4494;4491:10;4488:36;;;4504:18;;:::i;:::-;4550:2;4547:1;4543:10;4582:2;4576:9;4645:2;4641:7;4636:2;4632;4628:11;4624:25;4616:6;4612:38;4700:6;4688:10;4685:22;4680:2;4668:10;4665:18;4662:46;4659:72;;;4711:18;;:::i;:::-;4747:2;4740:22;4797:18;;;4873:15;;;4869:24;;;4831:15;;;;-1:-1:-1;4905:15:158;;;4902:35;;;4933:1;4930;4923:12;4902:35;4969:2;4961:6;4957:15;4946:26;;4981:142;4997:6;4992:3;4989:15;4981:142;;;5063:17;;5051:30;;5101:12;;;;5014;;;;4981:142;;;5141:6;4251:902;-1:-1:-1;;;;;;;4251:902:158:o;5158:1554::-;5297:6;5305;5313;5321;5365:9;5356:7;5352:23;5395:3;5391:2;5387:12;5384:32;;;5412:1;5409;5402:12;5384:32;5435:6;5461:2;5457;5453:11;5450:31;;;5477:1;5474;5467:12;5450:31;5503:17;;:::i;:::-;5490:30;;5543:29;5562:9;5543:29;:::i;:::-;5536:5;5529:44;5633:2;5622:9;5618:18;5605:32;5600:2;5593:5;5589:14;5582:56;5698:2;5687:9;5683:18;5670:32;5665:2;5658:5;5654:14;5647:56;5763:2;5752:9;5748:18;5735:32;5730:2;5723:5;5719:14;5712:56;5829:3;5818:9;5814:19;5801:33;5795:3;5788:5;5784:15;5777:58;5896:3;5885:9;5881:19;5868:33;5862:3;5855:5;5851:15;5844:58;5963:3;5952:9;5948:19;5935:33;5929:3;5922:5;5918:15;5911:58;6002:39;6036:3;6025:9;6021:19;6002:39;:::i;:::-;5996:3;5989:5;5985:15;5978:64;6061:3;6096:38;6130:2;6119:9;6115:18;6096:38;:::i;:::-;6080:14;;;6073:62;6154:3;6189:51;6232:7;6212:18;;;6189:51;:::i;:::-;6173:14;;;6166:75;6305:6;6290:22;;6277:36;6268:6;6257:18;;6250:64;6378:3;6363:19;;6350:33;6341:6;6330:18;;6323:61;6177:5;;-1:-1:-1;6444:18:158;;6431:32;6486:18;6475:30;;6472:50;;;6518:1;6515;6508:12;6472:50;6541:61;6594:7;6585:6;6574:9;6570:22;6541:61;:::i;:::-;5158:1554;;6531:71;;-1:-1:-1;;;;6649:3:158;6634:19;;6621:33;;6701:3;6686:19;6673:33;;5158:1554;-1:-1:-1;5158:1554:158:o;7451:232::-;7490:3;7511:17;;;7508:140;;7570:10;7565:3;7561:20;7558:1;7551:31;7605:4;7602:1;7595:15;7633:4;7630:1;7623:15;7508:140;-1:-1:-1;7675:1:158;7664:13;;7451:232::o;8187:1007::-;8291:12;;-1:-1:-1;;;;;559:31:158;547:44;;8358:4;8351:5;8347:16;8341:23;8334:4;8329:3;8325:14;8318:47;8414:4;8407:5;8403:16;8397:23;8390:4;8385:3;8381:14;8374:47;8470:4;8463:5;8459:16;8453:23;8446:4;8441:3;8437:14;8430:47;8526:4;8519:5;8515:16;8509:23;8502:4;8497:3;8493:14;8486:47;8582:4;8575:5;8571:16;8565:23;8558:4;8553:3;8549:14;8542:47;8638:4;8631:5;8627:16;8621:23;8614:4;8609:3;8605:14;8598:47;8691:4;8684:5;8680:16;8674:23;8706:69;8769:4;8764:3;8760:14;8746:12;-1:-1:-1;;;;;559:31:158;547:44;;472:125;8706:69;-1:-1:-1;8794:6:158;8837:14;;;8831:21;-1:-1:-1;;;;;559:31:158;;8917:12;;;547:44;-1:-1:-1;;8949:6:158;8992:14;;;8986:21;8051:12;;9055;;;8039:25;8113:4;8102:16;;8096:23;8080:14;;;8073:47;8169:4;8158:16;;8152:23;8136:14;;;8129:47;-1:-1:-1;;9119:6:158;9108:18;;9102:25;9093:6;9084:16;;9077:51;9179:6;9168:18;9162:25;9153:6;9144:16;;;9137:51;8187:1007::o;9199:435::-;9252:3;9290:5;9284:12;9317:6;9312:3;9305:19;9343:4;9372:2;9367:3;9363:12;9356:19;;9409:2;9402:5;9398:14;9430:1;9440:169;9454:6;9451:1;9448:13;9440:169;;;9515:13;;9503:26;;9549:12;;;;9584:15;;;;9476:1;9469:9;9440:169;;;-1:-1:-1;9625:3:158;;9199:435;-1:-1:-1;;;;;9199:435:158:o;9639:705::-;9949:4;9978:3;9990:47;10027:9;10019:6;9990:47;:::i;:::-;-1:-1:-1;;;;;10112:15:158;;;10106:3;10091:19;;10084:44;10159:3;10144:19;;10137:35;;;10209:15;;10203:3;10188:19;;10181:44;10256:3;10241:19;;10234:31;;;10282:56;10319:18;;;10311:6;10282:56;:::i;10349:272::-;10419:6;10472:2;10460:9;10451:7;10447:23;10443:32;10440:52;;;10488:1;10485;10478:12;10440:52;10520:9;10514:16;10539:52;10585:5;10539:52;:::i;10626:704::-;-1:-1:-1;;;;;11033:15:158;;;11015:34;;10936:4;;10965:3;;11058:56;11110:2;11095:18;;11087:6;11058:56;:::i;:::-;11163:2;11155:6;11151:15;11145:3;11134:9;11130:19;11123:44;;11204:6;11198:3;11187:9;11183:19;11176:35;11248:2;11242:3;11231:9;11227:19;11220:31;11268:56;11320:2;11309:9;11305:18;11297:6;11268:56;:::i;11715:277::-;11782:6;11835:2;11823:9;11814:7;11810:23;11806:32;11803:52;;;11851:1;11848;11841:12;11803:52;11883:9;11877:16;11936:5;11929:13;11922:21;11915:5;11912:32;11902:60;;11958:1;11955;11948:12;12708:184;12778:6;12831:2;12819:9;12810:7;12806:23;12802:32;12799:52;;;12847:1;12844;12837:12;12799:52;-1:-1:-1;12870:16:158;;12708:184;-1:-1:-1;12708:184:158:o;12897:127::-;12958:10;12953:3;12949:20;12946:1;12939:31;12989:4;12986:1;12979:15;13013:4;13010:1;13003:15;13318:545;13609:3;13594:19;;13622:47;13598:9;13651:6;13622:47;:::i;:::-;13700:3;13685:19;;13678:35;;;;-1:-1:-1;;;;;13788:15:158;;;13782:3;13767:19;;13760:44;13841:15;;13835:3;13820:19;;;13813:44;13318:545;;-1:-1:-1;13318:545:158:o", "linkReferences": {}, "immutableReferences": { - "4509": [ + "5086": [ { - "start": 3636, + "start": 3637, "length": 32 } ], - "4744": [ + "5321": [ { - "start": 1621, + "start": 1490, "length": 32 } ], - "4746": [ + "5323": [ { - "start": 1664, + "start": 1533, "length": 32 } ], - "4748": [ + "5325": [ { - "start": 1711, + "start": 1580, "length": 32 } ] } }, "methodIdentifiers": { - "deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)": "5834c760", + "deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)": "8927f4e9", "feeCollector()": "c415b95c", "fees()": "9af1d35a", "getDefaultPausers()": "7f7c5a7d", @@ -783,7 +793,7 @@ "updateSweepTargets(address[])": "09b9075f", "versionCounter()": "dd6d30c1" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"maxFees\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"defaultPausers\",\"type\":\"address[]\"}],\"internalType\":\"struct HyperdriveFactory.FactoryConfig\",\"name\":\"_factoryConfig\",\"type\":\"tuple\"},{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"_deployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"hyperdrive\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"linkerFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"linkerCodeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"extraData\",\"type\":\"bytes32[]\"}],\"name\":\"Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFeeCollector\",\"type\":\"address\"}],\"name\":\"FeeCollectorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"HyperdriveGovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newCodeHash\",\"type\":\"bytes32\"}],\"name\":\"LinkerCodeHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLinkerFactory\",\"type\":\"address\"}],\"name\":\"LinkerFactoryUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"}],\"name\":\"deployAndInitialize\",\"outputs\":[{\"internalType\":\"contract IHyperdrive\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeCollector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPausers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSweepTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveDeployer\",\"outputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveGovernance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"}],\"name\":\"isOfficial\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultPausers_\",\"type\":\"address[]\"}],\"name\":\"updateDefaultPausers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeCollector\",\"type\":\"address\"}],\"name\":\"updateFeeCollector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"_fees\",\"type\":\"tuple\"}],\"name\":\"updateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"updateGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"updateHyperdriveGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"}],\"name\":\"updateLinkerCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"}],\"name\":\"updateLinkerFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"name\":\"updateSweepTargets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_deployer\":\"The contract that deploys new hyperdrive instances.\",\"_factoryConfig\":\"The variables that configure the factory;\",\"_linkerCodeHash\":\"The hash of the linker contract's constructor code.\",\"_linkerFactory\":\"The linker factory.\",\"_pool\":\"The ERC4626 pool.\",\"_sweepTargets_\":\"The addresses that can be swept by the fee collector.\"}},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"params\":{\"_apr\":\"The initial spot rate.\",\"_config\":\"The pool configuration.\",\"_contribution\":\"The contribution amount.\"}},\"getDefaultPausers()\":{\"returns\":{\"_0\":\"The default pausers.\"}},\"getSweepTargets()\":{\"returns\":{\"_0\":\"The sweep targets.\"}},\"updateDefaultPausers(address[])\":{\"params\":{\"_defaultPausers_\":\"The new list of default pausers.\"}},\"updateFeeCollector(address)\":{\"params\":{\"_feeCollector\":\"The new fee collector address.\"}},\"updateFees((uint256,uint256,uint256))\":{\"params\":{\"_fees\":\"The new defaults for the fee parameters.\"}},\"updateGovernance(address)\":{\"params\":{\"_governance\":\"The new governance address.\"}},\"updateHyperdriveGovernance(address)\":{\"params\":{\"_hyperdriveGovernance\":\"The new hyperdrive governance address.\"}},\"updateImplementation(address)\":{\"params\":{\"newDeployer\":\"The new deployment contract.\"}},\"updateLinkerCodeHash(bytes32)\":{\"params\":{\"_linkerCodeHash\":\"The new linker code hash.\"}},\"updateLinkerFactory(address)\":{\"params\":{\"_linkerFactory\":\"The new linker factory.\"}},\"updateSweepTargets(address[])\":{\"params\":{\"_sweepTargets_\":\"The new sweep targets.\"}}},\"stateVariables\":{\"pool\":{\"details\":\"The address of the ERC4626 pool used in this factory.\"}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Deployed(uint256,address,(address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,bytes32[])\":{\"notice\":\"The event that is emitted when new instances are deployed.\"},\"FeeCollectorUpdated(address)\":{\"notice\":\"Emitted when the fee collector is updated.\"},\"GovernanceUpdated(address)\":{\"notice\":\"Emitted when governance is transferred.\"},\"HyperdriveGovernanceUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive governance address is updated.\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive implementation is updated.\"},\"LinkerCodeHashUpdated(bytes32)\":{\"notice\":\"Emitted when the linker code hash is updated.\"},\"LinkerFactoryUpdated(address)\":{\"notice\":\"Emitted when the linker factory is updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the factory.\"},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"notice\":\"This deploys and initializes a new ERC4626Hyperdrive instance.\"},\"feeCollector()\":{\"notice\":\"The fee collector used when new instances are deployed.\"},\"fees()\":{\"notice\":\"The fee parameters used when new instances are deployed.\"},\"getDefaultPausers()\":{\"notice\":\"Gets the default pausers.\"},\"getSweepTargets()\":{\"notice\":\"Gets the sweep targets.\"},\"governance()\":{\"notice\":\"The governance address that updates the factory's configuration.\"},\"hyperdriveDeployer()\":{\"notice\":\"The contract used to deploy new instances.\"},\"hyperdriveGovernance()\":{\"notice\":\"The governance address used when new instances are deployed.\"},\"isOfficial(address)\":{\"notice\":\"A mapping from deployed Hyperdrive instances to the version of the deployer that deployed them.\"},\"linkerCodeHash()\":{\"notice\":\"The linker code hash used when new instances are deployed.\"},\"linkerFactory()\":{\"notice\":\"The linker factory used when new instances are deployed.\"},\"updateDefaultPausers(address[])\":{\"notice\":\"Allows governance to change the default pausers.\"},\"updateFeeCollector(address)\":{\"notice\":\"Allows governance to change the fee collector address.\"},\"updateFees((uint256,uint256,uint256))\":{\"notice\":\"Allows governance to update the default fee schedule that will be used in new deployments.\"},\"updateGovernance(address)\":{\"notice\":\"Allows governance to transfer the governance role.\"},\"updateHyperdriveGovernance(address)\":{\"notice\":\"Allows governance to change the hyperdrive governance address\"},\"updateImplementation(address)\":{\"notice\":\"Allows governance to update the deployer contract.\"},\"updateLinkerCodeHash(bytes32)\":{\"notice\":\"Allows governance to change the linker code hash. This allows governance to update the implementation of the ERC20Forwarder.\"},\"updateLinkerFactory(address)\":{\"notice\":\"Allows governance to change the linker factory.\"},\"updateSweepTargets(address[])\":{\"notice\":\"Allows governance to change the sweep targets used in deployed instances.\"},\"versionCounter()\":{\"notice\":\"The number of times the factory's deployer has been updated.\"}},\"notice\":\"Deploys hyperdrive instances and initializes them. It also holds a registry of all deployed hyperdrive instances.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":\"ERC4626HyperdriveFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/HyperdriveDataProvider.sol\":{\"keccak256\":\"0xbcd76d5a3b779d9e737252cbdc3344ff68a4f045f5294b4b25b9b9d52900707a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://540c7390d0d4623c9d5bc9f0de77096049898baed7e5add13d9be1ecaf0a95e6\",\"dweb:/ipfs/QmV88ieRiQB4y5vSAUeANwyRH36aZ21deLkWHnD6YqH3Er\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xa1fb3fc7e0597c8ccd305df5f18bb04166260ea908e73ff359ee959bd6cbc67d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1dc0bf841efa3f67efd1d15bb83842e06fd96c1a974003a4da0313a209faa0f\",\"dweb:/ipfs/QmXui8LB765fu91nKBNeVgRQnCrYPpXMpxD3hapojQWRoY\"]},\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":{\"keccak256\":\"0xa27700f8c837640247830835a7db53b96c7aa493861b46effae4d4e99430ee0a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a8b27fb4deadab0be3a4eedcea74c3fad676f51a8ebb8a0ea4f2f61aaadb871\",\"dweb:/ipfs/QmZiWw6gmiFnrNrnqrxkJM6y4gLNLKc2CYQbTA2ZA2TnLP\"]},\"contracts/src/factory/HyperdriveFactory.sol\":{\"keccak256\":\"0x89d46a77917eb06d0acda5069994e2ebc9c291430830c4255e36a0dc0ebbd50f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2b9df57bbfae4570b02048f29c6fd6200666709d93939dac4734773c92bc1646\",\"dweb:/ipfs/QmZQzN6zY4vLdWgaKxK3iGRVn5D7xnkT433x1bC3KH3LqR\"]},\"contracts/src/instances/ERC4626DataProvider.sol\":{\"keccak256\":\"0xff9052b6730f9f730426a45026a2bd0f0201b457c899f8faed0b4c69c6ee1985\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://88f763a766bf86163d7bf417737a3980a1ee4dbd7959bbbf4c7d60e7b59c6c37\",\"dweb:/ipfs/QmdqVv7iUpopKYcXLo97JBC5fjXnYUGSb1wcBdYYQCYmW9\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e\",\"dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386\",\"dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166\",\"dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x197ef70f77f1af87da7ef0a5ae59f8e3fd53689e5ff6c844781c0fafa9ea7427\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4404f2e8c63a5233e98e8baa6c7f472aa65eace1d7646de0e23344ffebee334c\",\"dweb:/ipfs/QmeFyFXEgRHYpQ6QSZQQAkR2oXVRQy3CnXL3vgaWLYxwYR\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x6c068ea7e60a4d8476d6392ee3e98e937488de453f090ca935ca2c05c76a5db6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a41fa6fe454088e2de3432bf8c9202d9634a35beebe8a2f9cb310ba136da2105\",\"dweb:/ipfs/QmYeAhiDFctvKxSq1QyTPdguBuQ4ymPCi3u3e5GYnyFktd\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0xe684cd0266697593297259a96fed5bee6707ad3536656807b3ec7fd3a10a93e9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6573b218ffc8a7ea8baac98c199ab6af2c1fcd8fed45ecbfacc4493fac3d43c1\",\"dweb:/ipfs/Qmf7DGkwkaj7vfitjW2JxFQAMeyEyzG7GKsbsonk9RcJnj\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0x07c62c69c7913bb0a3defdf2e1570047f47a2a870d2e5a0b71637e92751180bb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bb0610e1d5d54991ef96ce495a594dad1c9cf4d64e4f93ebce87752d349a2d01\",\"dweb:/ipfs/QmSbADniYagQV4BArPTLfZQkc9VGnFxFt2FEZQcezuCzxK\"]},\"contracts/src/token/MultiTokenDataProvider.sol\":{\"keccak256\":\"0x1b2f98b9d6feaf0fc13ac4010dee2d2f49ecd33bf75d0c5be7e3318a6df2620f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4230f69efbb31e8194a78fb3ef5e2a69d349fe6f8b8aa4cf6b280484f3653cef\",\"dweb:/ipfs/QmScBP66WMXxXh28ScmU6SgSCWYhsRQHpZ755NyxTfCJoV\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"maxFees\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"defaultPausers\",\"type\":\"address[]\"}],\"internalType\":\"struct HyperdriveFactory.FactoryConfig\",\"name\":\"_factoryConfig\",\"type\":\"tuple\"},{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"_deployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC4626\",\"name\":\"_pool\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"hyperdrive\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"linkerFactory\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"linkerCodeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"extraData\",\"type\":\"bytes32[]\"}],\"name\":\"Deployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newFeeCollector\",\"type\":\"address\"}],\"name\":\"FeeCollectorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"HyperdriveGovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newCodeHash\",\"type\":\"bytes32\"}],\"name\":\"LinkerCodeHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLinkerFactory\",\"type\":\"address\"}],\"name\":\"LinkerFactoryUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"_config\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"}],\"name\":\"deployAndInitialize\",\"outputs\":[{\"internalType\":\"contract IHyperdrive\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeCollector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultPausers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSweepTargets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveDeployer\",\"outputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hyperdriveGovernance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"instance\",\"type\":\"address\"}],\"name\":\"isOfficial\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerFactory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_defaultPausers_\",\"type\":\"address[]\"}],\"name\":\"updateDefaultPausers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeCollector\",\"type\":\"address\"}],\"name\":\"updateFeeCollector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"_fees\",\"type\":\"tuple\"}],\"name\":\"updateFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"updateGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_hyperdriveGovernance\",\"type\":\"address\"}],\"name\":\"updateHyperdriveGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IHyperdriveDeployer\",\"name\":\"newDeployer\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_linkerCodeHash\",\"type\":\"bytes32\"}],\"name\":\"updateLinkerCodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_linkerFactory\",\"type\":\"address\"}],\"name\":\"updateLinkerFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_sweepTargets_\",\"type\":\"address[]\"}],\"name\":\"updateSweepTargets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_deployer\":\"The contract that deploys new hyperdrive instances.\",\"_factoryConfig\":\"The variables that configure the factory;\",\"_linkerCodeHash\":\"The hash of the linker contract's constructor code.\",\"_linkerFactory\":\"The linker factory.\",\"_pool\":\"The ERC4626 pool.\",\"_sweepTargets_\":\"The addresses that can be swept by the fee collector.\"}},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"params\":{\"_apr\":\"The initial spot rate.\",\"_config\":\"The pool configuration.\",\"_contribution\":\"The contribution amount.\"}},\"getDefaultPausers()\":{\"returns\":{\"_0\":\"The default pausers.\"}},\"getSweepTargets()\":{\"returns\":{\"_0\":\"The sweep targets.\"}},\"updateDefaultPausers(address[])\":{\"params\":{\"_defaultPausers_\":\"The new list of default pausers.\"}},\"updateFeeCollector(address)\":{\"params\":{\"_feeCollector\":\"The new fee collector address.\"}},\"updateFees((uint256,uint256,uint256))\":{\"params\":{\"_fees\":\"The new defaults for the fee parameters.\"}},\"updateGovernance(address)\":{\"params\":{\"_governance\":\"The new governance address.\"}},\"updateHyperdriveGovernance(address)\":{\"params\":{\"_hyperdriveGovernance\":\"The new hyperdrive governance address.\"}},\"updateImplementation(address)\":{\"params\":{\"newDeployer\":\"The new deployment contract.\"}},\"updateLinkerCodeHash(bytes32)\":{\"params\":{\"_linkerCodeHash\":\"The new linker code hash.\"}},\"updateLinkerFactory(address)\":{\"params\":{\"_linkerFactory\":\"The new linker factory.\"}},\"updateSweepTargets(address[])\":{\"params\":{\"_sweepTargets_\":\"The new sweep targets.\"}}},\"stateVariables\":{\"pool\":{\"details\":\"The address of the ERC4626 pool used in this factory.\"}},\"title\":\"ERC4626HyperdriveFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalFailed()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Deployed(uint256,address,(address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),address,bytes32,bytes32[])\":{\"notice\":\"The event that is emitted when new instances are deployed.\"},\"FeeCollectorUpdated(address)\":{\"notice\":\"Emitted when the fee collector is updated.\"},\"GovernanceUpdated(address)\":{\"notice\":\"Emitted when governance is transferred.\"},\"HyperdriveGovernanceUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive governance address is updated.\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the Hyperdrive implementation is updated.\"},\"LinkerCodeHashUpdated(bytes32)\":{\"notice\":\"Emitted when the linker code hash is updated.\"},\"LinkerFactoryUpdated(address)\":{\"notice\":\"Emitted when the linker factory is updated.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the factory.\"},\"deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)\":{\"notice\":\"This deploys and initializes a new ERC4626Hyperdrive instance.\"},\"feeCollector()\":{\"notice\":\"The fee collector used when new instances are deployed.\"},\"fees()\":{\"notice\":\"The fee parameters used when new instances are deployed.\"},\"getDefaultPausers()\":{\"notice\":\"Gets the default pausers.\"},\"getSweepTargets()\":{\"notice\":\"Gets the sweep targets.\"},\"governance()\":{\"notice\":\"The governance address that updates the factory's configuration.\"},\"hyperdriveDeployer()\":{\"notice\":\"The contract used to deploy new instances.\"},\"hyperdriveGovernance()\":{\"notice\":\"The governance address used when new instances are deployed.\"},\"isOfficial(address)\":{\"notice\":\"A mapping from deployed Hyperdrive instances to the version of the deployer that deployed them.\"},\"linkerCodeHash()\":{\"notice\":\"The linker code hash used when new instances are deployed.\"},\"linkerFactory()\":{\"notice\":\"The linker factory used when new instances are deployed.\"},\"updateDefaultPausers(address[])\":{\"notice\":\"Allows governance to change the default pausers.\"},\"updateFeeCollector(address)\":{\"notice\":\"Allows governance to change the fee collector address.\"},\"updateFees((uint256,uint256,uint256))\":{\"notice\":\"Allows governance to update the default fee schedule that will be used in new deployments.\"},\"updateGovernance(address)\":{\"notice\":\"Allows governance to transfer the governance role.\"},\"updateHyperdriveGovernance(address)\":{\"notice\":\"Allows governance to change the hyperdrive governance address\"},\"updateImplementation(address)\":{\"notice\":\"Allows governance to update the deployer contract.\"},\"updateLinkerCodeHash(bytes32)\":{\"notice\":\"Allows governance to change the linker code hash. This allows governance to update the implementation of the ERC20Forwarder.\"},\"updateLinkerFactory(address)\":{\"notice\":\"Allows governance to change the linker factory.\"},\"updateSweepTargets(address[])\":{\"notice\":\"Allows governance to change the sweep targets used in deployed instances.\"},\"versionCounter()\":{\"notice\":\"The number of times the factory's deployer has been updated.\"}},\"notice\":\"Deploys hyperdrive instances and initializes them. It also holds a registry of all deployed hyperdrive instances.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":\"ERC4626HyperdriveFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/HyperdriveDataProvider.sol\":{\"keccak256\":\"0xea418cf80337b742a7a074a85dfcd5117e5792026a960d0ff0888dba361b4a86\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9e93bf69aca41e06649b15195ffb13fbeced92af6f947e4a12ab9bf27bddfec4\",\"dweb:/ipfs/QmNdf2a1TVQDGnvRJVkwWaCsrSmLKg61QjAK5GCgsHfT2u\"]},\"contracts/src/HyperdriveStorage.sol\":{\"keccak256\":\"0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a\",\"dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY\"]},\"contracts/src/factory/ERC4626HyperdriveFactory.sol\":{\"keccak256\":\"0xa27700f8c837640247830835a7db53b96c7aa493861b46effae4d4e99430ee0a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a8b27fb4deadab0be3a4eedcea74c3fad676f51a8ebb8a0ea4f2f61aaadb871\",\"dweb:/ipfs/QmZiWw6gmiFnrNrnqrxkJM6y4gLNLKc2CYQbTA2ZA2TnLP\"]},\"contracts/src/factory/HyperdriveFactory.sol\":{\"keccak256\":\"0x89d46a77917eb06d0acda5069994e2ebc9c291430830c4255e36a0dc0ebbd50f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2b9df57bbfae4570b02048f29c6fd6200666709d93939dac4734773c92bc1646\",\"dweb:/ipfs/QmZQzN6zY4vLdWgaKxK3iGRVn5D7xnkT433x1bC3KH3LqR\"]},\"contracts/src/instances/ERC4626DataProvider.sol\":{\"keccak256\":\"0xff9052b6730f9f730426a45026a2bd0f0201b457c899f8faed0b4c69c6ee1985\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://88f763a766bf86163d7bf417737a3980a1ee4dbd7959bbbf4c7d60e7b59c6c37\",\"dweb:/ipfs/QmdqVv7iUpopKYcXLo97JBC5fjXnYUGSb1wcBdYYQCYmW9\"]},\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IERC4626.sol\":{\"keccak256\":\"0xaf48462596aa9c7544086c0a5e53adc7bf8f713662a5fb270ffb4e4db16e23cf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b2e5e6d94edba7e97dce8b5e061d40955d39fa586579d170f66cbecdbd2348dc\",\"dweb:/ipfs/QmeUkSbHaBmCeZnmup5RujvxRAyhw1u9vpRRpzeuU2wiia\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff\",\"dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp\"]},\"contracts/src/interfaces/IHyperdriveDeployer.sol\":{\"keccak256\":\"0x7f6184ad6c3b28650b6644e74d7fdf4af5854c6e80f813da468a496aeb8c6da0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ce31b67fc912729ee56d8b53abf699882ea44ddd4c62052dc1685c9694685587\",\"dweb:/ipfs/QmbUBE3V1ahsVKrKzHs8Ho5H4U1XVB182BsRDFgt4ZjLZB\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5\",\"dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/AssetId.sol\":{\"keccak256\":\"0x197ef70f77f1af87da7ef0a5ae59f8e3fd53689e5ff6c844781c0fafa9ea7427\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4404f2e8c63a5233e98e8baa6c7f472aa65eace1d7646de0e23344ffebee334c\",\"dweb:/ipfs/QmeFyFXEgRHYpQ6QSZQQAkR2oXVRQy3CnXL3vgaWLYxwYR\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x7201face24c251bff410396e8c0591373c1d4da1b86ef3758e145de52c52919e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1a4c4306b3b99fe350078e31d98ed1cc74e72d9238ee9ee13be93c3048d0f8f\",\"dweb:/ipfs/QmYyPwjUmt7M1QsUbfwsnvV6saYKQVRYFTMM7AE3NKArRy\"]},\"contracts/src/libraries/HyperdriveMath.sol\":{\"keccak256\":\"0xe8ed95815861cb8c77dfc6ac177bc426131957097fe6c2078d1a727024341884\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://71da9674ca5562611cda2fd905cb9d7b134e85778d5fc210bfabc05f20c15182\",\"dweb:/ipfs/QmUnR27GseanPti6GtNdhPojsrBEpq688We7A8e6td1H6b\"]},\"contracts/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x4c11749b6a90f9a29f5fa32befa048cfc9da8b02d3099d35e74ebf4d65fb8923\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://f68984e9304312a8bf6b1046a9a2d5eb44add6b774d117b9de698bad09cbb7c2\",\"dweb:/ipfs/QmRgZQgcBF4pyXA7VgMAba5VABr7ii9yVBMxMufHijXjfk\"]},\"contracts/src/libraries/YieldSpaceMath.sol\":{\"keccak256\":\"0xfbadd1a098daabff3db492f68050fa7eb992891aa42406bd80fb18f72121b36c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://79bd9ad56f8bceffdcc0238efe29bee81c1af6329e294fb64931e1623e818c97\",\"dweb:/ipfs/QmNXHAZ1UjuisMSYA5aicjUk8v5Q1mnv2SMYPLW9gGaGnz\"]},\"contracts/src/token/MultiTokenDataProvider.sol\":{\"keccak256\":\"0x1b2f98b9d6feaf0fc13ac4010dee2d2f49ecd33bf75d0c5be7e3318a6df2620f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4230f69efbb31e8194a78fb3ef5e2a69d349fe6f8b8aa4cf6b280484f3653cef\",\"dweb:/ipfs/QmScBP66WMXxXh28ScmU6SgSCWYhsRQHpZ755NyxTfCJoV\"]},\"contracts/src/token/MultiTokenStorage.sol\":{\"keccak256\":\"0x97a22d11197f185d6f17ff5ada60665b27af265c23b208f20004e22b26d7b7e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://62f950f46f3de598776e8e8201a0d35ec51473cc0ea754be5c9e686078ebb3d6\",\"dweb:/ipfs/QmaKpZETx9zCV46XwcqvXUr7f8t2CPo1Tim2umTDwsk2bj\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/solmate/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb282dd78aa7375d6b200b9a5d8dd214b2e5df1004f8217a4b4c2b07f0c5bfd01\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5fca62eb8d3dbd2b3b7e4bb051f6da16f4d0ff9cee61c39cebb80f031f6a8800\",\"dweb:/ipfs/QmbrsXPK91iBFwHKwJs2HLRud2KzMoBDRiWYMUtyV5H57j\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -952,6 +962,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -1135,6 +1150,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -1519,7 +1539,7 @@ "_sweepTargets_": "The addresses that can be swept by the fee collector." } }, - "deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)": { + "deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)": { "params": { "_apr": "The initial spot rate.", "_config": "The pool configuration.", @@ -1590,7 +1610,7 @@ "constructor": { "notice": "Initializes the factory." }, - "deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)": { + "deployAndInitialize((address,uint256,uint256,uint256,uint256,uint256,uint256,address,address,(uint256,uint256,uint256),uint256,uint256),bytes32[],uint256,uint256)": { "notice": "This deploys and initializes a new ERC4626Hyperdrive instance." }, "feeCollector()": { @@ -1659,16 +1679,16 @@ }, "settings": { "remappings": [ - ":@aave/=lib/aave-v3-core/contracts/", - ":aave-v3-core/=lib/aave-v3-core/", - ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/", - ":yield-daddy/=lib/yield-daddy/" + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/" ], "optimizer": { "enabled": true, @@ -1684,18 +1704,18 @@ }, "sources": { "contracts/src/HyperdriveDataProvider.sol": { - "keccak256": "0xbcd76d5a3b779d9e737252cbdc3344ff68a4f045f5294b4b25b9b9d52900707a", + "keccak256": "0xea418cf80337b742a7a074a85dfcd5117e5792026a960d0ff0888dba361b4a86", "urls": [ - "bzz-raw://540c7390d0d4623c9d5bc9f0de77096049898baed7e5add13d9be1ecaf0a95e6", - "dweb:/ipfs/QmV88ieRiQB4y5vSAUeANwyRH36aZ21deLkWHnD6YqH3Er" + "bzz-raw://9e93bf69aca41e06649b15195ffb13fbeced92af6f947e4a12ab9bf27bddfec4", + "dweb:/ipfs/QmNdf2a1TVQDGnvRJVkwWaCsrSmLKg61QjAK5GCgsHfT2u" ], "license": "Apache-2.0" }, "contracts/src/HyperdriveStorage.sol": { - "keccak256": "0xa1fb3fc7e0597c8ccd305df5f18bb04166260ea908e73ff359ee959bd6cbc67d", + "keccak256": "0xf02f44333981dfbf6c500bf979aab8cd7aee9731d103a6aafc247e09b90b76bc", "urls": [ - "bzz-raw://a1dc0bf841efa3f67efd1d15bb83842e06fd96c1a974003a4da0313a209faa0f", - "dweb:/ipfs/QmXui8LB765fu91nKBNeVgRQnCrYPpXMpxD3hapojQWRoY" + "bzz-raw://6664cd66465073274f9c2c27fee39e1c64e8e21fff532e64cd3014800582b00a", + "dweb:/ipfs/QmSGH1ixAUMu81yYf3pMFHo4uJxw6XgfnkBupjUSoFcdNY" ], "license": "Apache-2.0" }, @@ -1740,10 +1760,10 @@ "license": "GPL-2.0-or-later" }, "contracts/src/interfaces/IHyperdrive.sol": { - "keccak256": "0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e", + "keccak256": "0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284", "urls": [ - "bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e", - "dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ" + "bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff", + "dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp" ], "license": "Apache-2.0" }, @@ -1756,18 +1776,18 @@ "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveRead.sol": { - "keccak256": "0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110", + "keccak256": "0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3", "urls": [ - "bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386", - "dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F" + "bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993", + "dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt" ], "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveWrite.sol": { - "keccak256": "0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615", + "keccak256": "0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16", "urls": [ - "bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166", - "dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG" + "bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5", + "dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx" ], "license": "Apache-2.0" }, @@ -1812,26 +1832,34 @@ "license": "Apache-2.0" }, "contracts/src/libraries/FixedPointMath.sol": { - "keccak256": "0x6c068ea7e60a4d8476d6392ee3e98e937488de453f090ca935ca2c05c76a5db6", + "keccak256": "0x7201face24c251bff410396e8c0591373c1d4da1b86ef3758e145de52c52919e", "urls": [ - "bzz-raw://a41fa6fe454088e2de3432bf8c9202d9634a35beebe8a2f9cb310ba136da2105", - "dweb:/ipfs/QmYeAhiDFctvKxSq1QyTPdguBuQ4ymPCi3u3e5GYnyFktd" + "bzz-raw://d1a4c4306b3b99fe350078e31d98ed1cc74e72d9238ee9ee13be93c3048d0f8f", + "dweb:/ipfs/QmYyPwjUmt7M1QsUbfwsnvV6saYKQVRYFTMM7AE3NKArRy" ], "license": "Apache-2.0" }, "contracts/src/libraries/HyperdriveMath.sol": { - "keccak256": "0xe684cd0266697593297259a96fed5bee6707ad3536656807b3ec7fd3a10a93e9", + "keccak256": "0xe8ed95815861cb8c77dfc6ac177bc426131957097fe6c2078d1a727024341884", "urls": [ - "bzz-raw://6573b218ffc8a7ea8baac98c199ab6af2c1fcd8fed45ecbfacc4493fac3d43c1", - "dweb:/ipfs/Qmf7DGkwkaj7vfitjW2JxFQAMeyEyzG7GKsbsonk9RcJnj" + "bzz-raw://71da9674ca5562611cda2fd905cb9d7b134e85778d5fc210bfabc05f20c15182", + "dweb:/ipfs/QmUnR27GseanPti6GtNdhPojsrBEpq688We7A8e6td1H6b" ], "license": "Apache-2.0" }, + "contracts/src/libraries/SafeCast.sol": { + "keccak256": "0x4c11749b6a90f9a29f5fa32befa048cfc9da8b02d3099d35e74ebf4d65fb8923", + "urls": [ + "bzz-raw://f68984e9304312a8bf6b1046a9a2d5eb44add6b774d117b9de698bad09cbb7c2", + "dweb:/ipfs/QmRgZQgcBF4pyXA7VgMAba5VABr7ii9yVBMxMufHijXjfk" + ], + "license": "AGPL-3.0-only" + }, "contracts/src/libraries/YieldSpaceMath.sol": { - "keccak256": "0x07c62c69c7913bb0a3defdf2e1570047f47a2a870d2e5a0b71637e92751180bb", + "keccak256": "0xfbadd1a098daabff3db492f68050fa7eb992891aa42406bd80fb18f72121b36c", "urls": [ - "bzz-raw://bb0610e1d5d54991ef96ce495a594dad1c9cf4d64e4f93ebce87752d349a2d01", - "dweb:/ipfs/QmSbADniYagQV4BArPTLfZQkc9VGnFxFt2FEZQcezuCzxK" + "bzz-raw://79bd9ad56f8bceffdcc0238efe29bee81c1af6329e294fb64931e1623e818c97", + "dweb:/ipfs/QmNXHAZ1UjuisMSYA5aicjUk8v5Q1mnv2SMYPLW9gGaGnz" ], "license": "Apache-2.0" }, @@ -1896,35 +1924,35 @@ }, "ast": { "absolutePath": "contracts/src/factory/ERC4626HyperdriveFactory.sol", - "id": 4651, + "id": 5228, "exportedSymbols": { "ERC4626DataProvider": [ - 5393 + 5970 ], "ERC4626HyperdriveFactory": [ - 4650 + 5227 ], "HyperdriveFactory": [ - 5289 + 5866 ], "IERC20": [ - 5835 + 6412 ], "IERC4626": [ - 6060 + 6578 ], "IHyperdrive": [ - 6429 + 6959 ], "IHyperdriveDeployer": [ - 6453 + 6983 ] }, "nodeType": "SourceUnit", "src": "39:4460:10", "nodes": [ { - "id": 4490, + "id": 5067, "nodeType": "PragmaDirective", "src": "39:23:10", "nodes": [], @@ -1935,23 +1963,23 @@ ] }, { - "id": 4492, + "id": 5069, "nodeType": "ImportDirective", "src": "64:75:10", "nodes": [], "absolutePath": "contracts/src/instances/ERC4626DataProvider.sol", "file": "../instances/ERC4626DataProvider.sol", "nameLocation": "-1:-1:-1", - "scope": 4651, - "sourceUnit": 5394, + "scope": 5228, + "sourceUnit": 5971, "symbolAliases": [ { "foreign": { - "id": 4491, + "id": 5068, "name": "ERC4626DataProvider", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5393, + "referencedDeclaration": 5970, "src": "73:19:10", "typeDescriptions": {} }, @@ -1961,23 +1989,23 @@ "unitAlias": "" }, { - "id": 4494, + "id": 5071, "nodeType": "ImportDirective", "src": "140:50:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC20.sol", "file": "../interfaces/IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 4651, - "sourceUnit": 5836, + "scope": 5228, + "sourceUnit": 6413, "symbolAliases": [ { "foreign": { - "id": 4493, + "id": 5070, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5835, + "referencedDeclaration": 6412, "src": "149:6:10", "typeDescriptions": {} }, @@ -1987,23 +2015,23 @@ "unitAlias": "" }, { - "id": 4496, + "id": 5073, "nodeType": "ImportDirective", "src": "191:54:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC4626.sol", "file": "../interfaces/IERC4626.sol", "nameLocation": "-1:-1:-1", - "scope": 4651, - "sourceUnit": 6061, + "scope": 5228, + "sourceUnit": 6579, "symbolAliases": [ { "foreign": { - "id": 4495, + "id": 5072, "name": "IERC4626", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "200:8:10", "typeDescriptions": {} }, @@ -2013,23 +2041,23 @@ "unitAlias": "" }, { - "id": 4498, + "id": 5075, "nodeType": "ImportDirective", "src": "246:60:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", "file": "../interfaces/IHyperdrive.sol", "nameLocation": "-1:-1:-1", - "scope": 4651, - "sourceUnit": 6430, + "scope": 5228, + "sourceUnit": 6960, "symbolAliases": [ { "foreign": { - "id": 4497, + "id": 5074, "name": "IHyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6429, + "referencedDeclaration": 6959, "src": "255:11:10", "typeDescriptions": {} }, @@ -2039,23 +2067,23 @@ "unitAlias": "" }, { - "id": 4500, + "id": 5077, "nodeType": "ImportDirective", "src": "307:76:10", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveDeployer.sol", "file": "../interfaces/IHyperdriveDeployer.sol", "nameLocation": "-1:-1:-1", - "scope": 4651, - "sourceUnit": 6454, + "scope": 5228, + "sourceUnit": 6984, "symbolAliases": [ { "foreign": { - "id": 4499, + "id": 5076, "name": "IHyperdriveDeployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6453, + "referencedDeclaration": 6983, "src": "316:19:10", "typeDescriptions": {} }, @@ -2065,23 +2093,23 @@ "unitAlias": "" }, { - "id": 4502, + "id": 5079, "nodeType": "ImportDirective", "src": "384:60:10", "nodes": [], "absolutePath": "contracts/src/factory/HyperdriveFactory.sol", "file": "./HyperdriveFactory.sol", "nameLocation": "-1:-1:-1", - "scope": 4651, - "sourceUnit": 5290, + "scope": 5228, + "sourceUnit": 5867, "symbolAliases": [ { "foreign": { - "id": 4501, + "id": 5078, "name": "HyperdriveFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 5289, + "referencedDeclaration": 5866, "src": "393:17:10", "typeDescriptions": {} }, @@ -2091,18 +2119,18 @@ "unitAlias": "" }, { - "id": 4650, + "id": 5227, "nodeType": "ContractDefinition", "src": "861:3637:10", "nodes": [ { - "id": 4509, + "id": 5086, "nodeType": "VariableDeclaration", "src": "989:32:10", "nodes": [], "constant": false, "documentation": { - "id": 4506, + "id": 5083, "nodeType": "StructuredDocumentation", "src": "922:62:10", "text": "@dev The address of the ERC4626 pool used in this factory." @@ -2110,43 +2138,43 @@ "mutability": "immutable", "name": "pool", "nameLocation": "1017:4:10", - "scope": 4650, + "scope": 5227, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" }, "typeName": { - "id": 4508, + "id": 5085, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4507, + "id": 5084, "name": "IERC4626", "nameLocations": [ "989:8:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "989:8:10" }, - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "989:8:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, "visibility": "internal" }, { - "id": 4513, + "id": 5090, "nodeType": "VariableDeclaration", "src": "1229:32:10", "nodes": [], "constant": false, "documentation": { - "id": 4510, + "id": 5087, "nodeType": "StructuredDocumentation", "src": "1028:196:10", "text": "@notice The sweep targets used in deployed instances. This specifies\n the addresses that the fee collector can sweep to collect\n incentives and redistribute them." @@ -2154,7 +2182,7 @@ "mutability": "mutable", "name": "_sweepTargets", "nameLocation": "1248:13:10", - "scope": 4650, + "scope": 5227, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2163,7 +2191,7 @@ }, "typeName": { "baseType": { - "id": 4511, + "id": 5088, "name": "address", "nodeType": "ElementaryTypeName", "src": "1229:7:10", @@ -2173,7 +2201,7 @@ "typeString": "address" } }, - "id": 4512, + "id": 5089, "nodeType": "ArrayTypeName", "src": "1229:9:10", "typeDescriptions": { @@ -2184,72 +2212,72 @@ "visibility": "internal" }, { - "id": 4548, + "id": 5125, "nodeType": "FunctionDefinition", "src": "1714:539:10", "nodes": [], "body": { - "id": 4547, + "id": 5124, "nodeType": "Block", "src": "2094:159:10", "nodes": [], "statements": [ { "expression": { - "id": 4541, + "id": 5118, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4539, + "id": 5116, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4509, + "referencedDeclaration": 5086, "src": "2144:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 4540, + "id": 5117, "name": "_pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4527, + "referencedDeclaration": 5104, "src": "2151:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, "src": "2144:12:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, - "id": 4542, + "id": 5119, "nodeType": "ExpressionStatement", "src": "2144:12:10" }, { "expression": { - "id": 4545, + "id": 5122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4543, + "id": 5120, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4513, + "referencedDeclaration": 5090, "src": "2216:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", @@ -2259,11 +2287,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 4544, + "id": 5121, "name": "_sweepTargets_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4530, + "referencedDeclaration": 5107, "src": "2232:14:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", @@ -2276,14 +2304,14 @@ "typeString": "address[] storage ref" } }, - "id": 4546, + "id": 5123, "nodeType": "ExpressionStatement", "src": "2216:30:10" } ] }, "documentation": { - "id": 4514, + "id": 5091, "nodeType": "StructuredDocumentation", "src": "1268:441:10", "text": "@notice Initializes the factory.\n @param _factoryConfig The variables that configure the factory;\n @param _deployer The contract that deploys new hyperdrive instances.\n @param _linkerFactory The linker factory.\n @param _linkerCodeHash The hash of the linker contract's constructor code.\n @param _pool The ERC4626 pool.\n @param _sweepTargets_ The addresses that can be swept by the fee collector." @@ -2294,35 +2322,35 @@ { "arguments": [ { - "id": 4533, + "id": 5110, "name": "_factoryConfig", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4517, + "referencedDeclaration": 5094, "src": "1985:14:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryConfig_$4774_memory_ptr", + "typeIdentifier": "t_struct$_FactoryConfig_$5351_memory_ptr", "typeString": "struct HyperdriveFactory.FactoryConfig memory" } }, { - "id": 4534, + "id": 5111, "name": "_deployer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4520, + "referencedDeclaration": 5097, "src": "2013:9:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdriveDeployer_$6453", + "typeIdentifier": "t_contract$_IHyperdriveDeployer_$6983", "typeString": "contract IHyperdriveDeployer" } }, { - "id": 4535, + "id": 5112, "name": "_linkerFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4522, + "referencedDeclaration": 5099, "src": "2036:14:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2330,11 +2358,11 @@ } }, { - "id": 4536, + "id": 5113, "name": "_linkerCodeHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4524, + "referencedDeclaration": 5101, "src": "2064:15:10", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2342,16 +2370,16 @@ } } ], - "id": 4537, + "id": 5114, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 4532, + "id": 5109, "name": "HyperdriveFactory", "nameLocations": [ "1954:17:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5289, + "referencedDeclaration": 5866, "src": "1954:17:10" }, "nodeType": "ModifierInvocation", @@ -2361,41 +2389,41 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 4531, + "id": 5108, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4517, + "id": 5094, "mutability": "mutable", "name": "_factoryConfig", "nameLocation": "1756:14:10", "nodeType": "VariableDeclaration", - "scope": 4548, + "scope": 5125, "src": "1735:35:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryConfig_$4774_memory_ptr", + "typeIdentifier": "t_struct$_FactoryConfig_$5351_memory_ptr", "typeString": "struct HyperdriveFactory.FactoryConfig" }, "typeName": { - "id": 4516, + "id": 5093, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4515, + "id": 5092, "name": "FactoryConfig", "nameLocations": [ "1735:13:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4774, + "referencedDeclaration": 5351, "src": "1735:13:10" }, - "referencedDeclaration": 4774, + "referencedDeclaration": 5351, "src": "1735:13:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_FactoryConfig_$4774_storage_ptr", + "typeIdentifier": "t_struct$_FactoryConfig_$5351_storage_ptr", "typeString": "struct HyperdriveFactory.FactoryConfig" } }, @@ -2403,36 +2431,36 @@ }, { "constant": false, - "id": 4520, + "id": 5097, "mutability": "mutable", "name": "_deployer", "nameLocation": "1800:9:10", "nodeType": "VariableDeclaration", - "scope": 4548, + "scope": 5125, "src": "1780:29:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdriveDeployer_$6453", + "typeIdentifier": "t_contract$_IHyperdriveDeployer_$6983", "typeString": "contract IHyperdriveDeployer" }, "typeName": { - "id": 4519, + "id": 5096, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4518, + "id": 5095, "name": "IHyperdriveDeployer", "nameLocations": [ "1780:19:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6453, + "referencedDeclaration": 6983, "src": "1780:19:10" }, - "referencedDeclaration": 6453, + "referencedDeclaration": 6983, "src": "1780:19:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdriveDeployer_$6453", + "typeIdentifier": "t_contract$_IHyperdriveDeployer_$6983", "typeString": "contract IHyperdriveDeployer" } }, @@ -2440,12 +2468,12 @@ }, { "constant": false, - "id": 4522, + "id": 5099, "mutability": "mutable", "name": "_linkerFactory", "nameLocation": "1827:14:10", "nodeType": "VariableDeclaration", - "scope": 4548, + "scope": 5125, "src": "1819:22:10", "stateVariable": false, "storageLocation": "default", @@ -2454,7 +2482,7 @@ "typeString": "address" }, "typeName": { - "id": 4521, + "id": 5098, "name": "address", "nodeType": "ElementaryTypeName", "src": "1819:7:10", @@ -2468,12 +2496,12 @@ }, { "constant": false, - "id": 4524, + "id": 5101, "mutability": "mutable", "name": "_linkerCodeHash", "nameLocation": "1859:15:10", "nodeType": "VariableDeclaration", - "scope": 4548, + "scope": 5125, "src": "1851:23:10", "stateVariable": false, "storageLocation": "default", @@ -2482,7 +2510,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 4523, + "id": 5100, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1851:7:10", @@ -2495,36 +2523,36 @@ }, { "constant": false, - "id": 4527, + "id": 5104, "mutability": "mutable", "name": "_pool", "nameLocation": "1893:5:10", "nodeType": "VariableDeclaration", - "scope": 4548, + "scope": 5125, "src": "1884:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" }, "typeName": { - "id": 4526, + "id": 5103, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4525, + "id": 5102, "name": "IERC4626", "nameLocations": [ "1884:8:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "1884:8:10" }, - "referencedDeclaration": 6060, + "referencedDeclaration": 6578, "src": "1884:8:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } }, @@ -2532,12 +2560,12 @@ }, { "constant": false, - "id": 4530, + "id": 5107, "mutability": "mutable", "name": "_sweepTargets_", "nameLocation": "1925:14:10", "nodeType": "VariableDeclaration", - "scope": 4548, + "scope": 5125, "src": "1908:31:10", "stateVariable": false, "storageLocation": "memory", @@ -2547,7 +2575,7 @@ }, "typeName": { "baseType": { - "id": 4528, + "id": 5105, "name": "address", "nodeType": "ElementaryTypeName", "src": "1908:7:10", @@ -2557,7 +2585,7 @@ "typeString": "address" } }, - "id": 4529, + "id": 5106, "nodeType": "ArrayTypeName", "src": "1908:9:10", "typeDescriptions": { @@ -2571,40 +2599,40 @@ "src": "1725:220:10" }, "returnParameters": { - "id": 4538, + "id": 5115, "nodeType": "ParameterList", "parameters": [], "src": "2094:0:10" }, - "scope": 4650, + "scope": 5227, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 4562, + "id": 5139, "nodeType": "FunctionDefinition", "src": "2418:148:10", "nodes": [], "body": { - "id": 4561, + "id": 5138, "nodeType": "Block", "src": "2519:47:10", "nodes": [], "statements": [ { "expression": { - "id": 4559, + "id": 5136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 4557, + "id": 5134, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4513, + "referencedDeclaration": 5090, "src": "2529:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", @@ -2614,11 +2642,11 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 4558, + "id": 5135, "name": "_sweepTargets_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4552, + "referencedDeclaration": 5129, "src": "2545:14:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", @@ -2631,14 +2659,14 @@ "typeString": "address[] storage ref" } }, - "id": 4560, + "id": 5137, "nodeType": "ExpressionStatement", "src": "2529:30:10" } ] }, "documentation": { - "id": 4549, + "id": 5126, "nodeType": "StructuredDocumentation", "src": "2259:154:10", "text": "@notice Allows governance to change the sweep targets used in deployed\n instances.\n @param _sweepTargets_ The new sweep targets." @@ -2648,16 +2676,16 @@ "kind": "function", "modifiers": [ { - "id": 4555, + "id": 5132, "kind": "modifierInvocation", "modifierName": { - "id": 4554, + "id": 5131, "name": "onlyGovernance", "nameLocations": [ "2504:14:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 4908, + "referencedDeclaration": 5485, "src": "2504:14:10" }, "nodeType": "ModifierInvocation", @@ -2667,17 +2695,17 @@ "name": "updateSweepTargets", "nameLocation": "2427:18:10", "parameters": { - "id": 4553, + "id": 5130, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4552, + "id": 5129, "mutability": "mutable", "name": "_sweepTargets_", "nameLocation": "2474:14:10", "nodeType": "VariableDeclaration", - "scope": 4562, + "scope": 5139, "src": "2455:33:10", "stateVariable": false, "storageLocation": "calldata", @@ -2687,7 +2715,7 @@ }, "typeName": { "baseType": { - "id": 4550, + "id": 5127, "name": "address", "nodeType": "ElementaryTypeName", "src": "2455:7:10", @@ -2697,7 +2725,7 @@ "typeString": "address" } }, - "id": 4551, + "id": 5128, "nodeType": "ArrayTypeName", "src": "2455:9:10", "typeDescriptions": { @@ -2711,40 +2739,40 @@ "src": "2445:49:10" }, "returnParameters": { - "id": 4556, + "id": 5133, "nodeType": "ParameterList", "parameters": [], "src": "2519:0:10" }, - "scope": 4650, + "scope": 5227, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 4608, + "id": 5185, "nodeType": "FunctionDefinition", "src": "2795:751:10", "nodes": [], "body": { - "id": 4607, + "id": 5184, "nodeType": "Block", "src": "3002:544:10", "nodes": [], "statements": [ { "assignments": [ - 4584 + 5161 ], "declarations": [ { "constant": false, - "id": 4584, + "id": 5161, "mutability": "mutable", "name": "sweepTargets_", "nameLocation": "3160:13:10", "nodeType": "VariableDeclaration", - "scope": 4607, + "scope": 5184, "src": "3143:30:10", "stateVariable": false, "storageLocation": "memory", @@ -2754,7 +2782,7 @@ }, "typeName": { "baseType": { - "id": 4582, + "id": 5159, "name": "address", "nodeType": "ElementaryTypeName", "src": "3143:7:10", @@ -2763,7 +2791,7 @@ "typeString": "address" } }, - "id": 4583, + "id": 5160, "nodeType": "ArrayTypeName", "src": "3143:9:10", "typeDescriptions": { @@ -2774,13 +2802,13 @@ "visibility": "internal" } ], - "id": 4586, + "id": 5163, "initialValue": { - "id": 4585, + "id": 5162, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4513, + "referencedDeclaration": 5090, "src": "3176:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", @@ -2792,17 +2820,17 @@ }, { "assignments": [ - 4591 + 5168 ], "declarations": [ { "constant": false, - "id": 4591, + "id": 5168, "mutability": "mutable", "name": "extraData", "nameLocation": "3216:9:10", "nodeType": "VariableDeclaration", - "scope": 4607, + "scope": 5184, "src": "3199:26:10", "stateVariable": false, "storageLocation": "memory", @@ -2812,7 +2840,7 @@ }, "typeName": { "baseType": { - "id": 4589, + "id": 5166, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3199:7:10", @@ -2821,7 +2849,7 @@ "typeString": "bytes32" } }, - "id": 4590, + "id": 5167, "nodeType": "ArrayTypeName", "src": "3199:9:10", "typeDescriptions": { @@ -2832,7 +2860,7 @@ "visibility": "internal" } ], - "id": 4592, + "id": 5169, "nodeType": "VariableDeclarationStatement", "src": "3199:26:10" }, @@ -2862,14 +2890,14 @@ "evmVersion": "paris", "externalReferences": [ { - "declaration": 4591, + "declaration": 5168, "isOffset": false, "isSlot": false, "src": "3274:9:10", "valueSize": 1 }, { - "declaration": 4584, + "declaration": 5161, "isOffset": false, "isSlot": false, "src": "3287:13:10", @@ -2879,74 +2907,74 @@ "flags": [ "memory-safe" ], - "id": 4593, + "id": 5170, "nodeType": "InlineAssembly", "src": "3235:75:10" }, { "assignments": [ - 4596 + 5173 ], "declarations": [ { "constant": false, - "id": 4596, + "id": 5173, "mutability": "mutable", "name": "hyperdrive", "nameLocation": "3331:10:10", "nodeType": "VariableDeclaration", - "scope": 4607, + "scope": 5184, "src": "3319:22:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$6429", + "typeIdentifier": "t_contract$_IHyperdrive_$6959", "typeString": "contract IHyperdrive" }, "typeName": { - "id": 4595, + "id": 5172, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4594, + "id": 5171, "name": "IHyperdrive", "nameLocations": [ "3319:11:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6429, + "referencedDeclaration": 6959, "src": "3319:11:10" }, - "referencedDeclaration": 6429, + "referencedDeclaration": 6959, "src": "3319:11:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$6429", + "typeIdentifier": "t_contract$_IHyperdrive_$6959", "typeString": "contract IHyperdrive" } }, "visibility": "internal" } ], - "id": 4604, + "id": 5181, "initialValue": { "arguments": [ { - "id": 4599, + "id": 5176, "name": "_config", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4566, + "referencedDeclaration": 5143, "src": "3383:7:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" } }, { - "id": 4600, + "id": 5177, "name": "extraData", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4591, + "referencedDeclaration": 5168, "src": "3404:9:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", @@ -2954,11 +2982,11 @@ } }, { - "id": 4601, + "id": 5178, "name": "_contribution", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4571, + "referencedDeclaration": 5148, "src": "3427:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2966,11 +2994,11 @@ } }, { - "id": 4602, + "id": 5179, "name": "_apr", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4573, + "referencedDeclaration": 5150, "src": "3454:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2981,7 +3009,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" }, { @@ -2998,18 +3026,18 @@ } ], "expression": { - "id": 4597, + "id": 5174, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "3344:5:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_ERC4626HyperdriveFactory_$4650_$", + "typeIdentifier": "t_type$_t_super$_ERC4626HyperdriveFactory_$5227_$", "typeString": "type(contract super ERC4626HyperdriveFactory)" } }, - "id": 4598, + "id": 5175, "isConstant": false, "isLValue": false, "isPure": false, @@ -3017,14 +3045,14 @@ "memberLocation": "3350:19:10", "memberName": "deployAndInitialize", "nodeType": "MemberAccess", - "referencedDeclaration": 5262, + "referencedDeclaration": 5839, "src": "3344:25:10", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolConfig_$6268_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_contract$_IHyperdrive_$6429_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PoolConfig_$6792_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_contract$_IHyperdrive_$6959_$", "typeString": "function (struct IHyperdrive.PoolConfig memory,bytes32[] memory,uint256,uint256) returns (contract IHyperdrive)" } }, - "id": 4603, + "id": 5180, "isConstant": false, "isLValue": false, "isPure": false, @@ -3036,7 +3064,7 @@ "src": "3344:124:10", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$6429", + "typeIdentifier": "t_contract$_IHyperdrive_$6959", "typeString": "contract IHyperdrive" } }, @@ -3045,82 +3073,82 @@ }, { "expression": { - "id": 4605, + "id": 5182, "name": "hyperdrive", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4596, + "referencedDeclaration": 5173, "src": "3529:10:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$6429", + "typeIdentifier": "t_contract$_IHyperdrive_$6959", "typeString": "contract IHyperdrive" } }, - "functionReturnParameters": 4579, - "id": 4606, + "functionReturnParameters": 5156, + "id": 5183, "nodeType": "Return", "src": "3522:17:10" } ] }, "baseFunctions": [ - 5262 + 5839 ], "documentation": { - "id": 4563, + "id": 5140, "nodeType": "StructuredDocumentation", "src": "2572:218:10", "text": "@notice This deploys and initializes a new ERC4626Hyperdrive instance.\n @param _config The pool configuration.\n @param _contribution The contribution amount.\n @param _apr The initial spot rate." }, - "functionSelector": "5834c760", + "functionSelector": "8927f4e9", "implemented": true, "kind": "function", "modifiers": [], "name": "deployAndInitialize", "nameLocation": "2804:19:10", "overrides": { - "id": 4575, + "id": 5152, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2971:8:10" }, "parameters": { - "id": 4574, + "id": 5151, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4566, + "id": 5143, "mutability": "mutable", "name": "_config", "nameLocation": "2863:7:10", "nodeType": "VariableDeclaration", - "scope": 4608, + "scope": 5185, "src": "2833:37:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig" }, "typeName": { - "id": 4565, + "id": 5142, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4564, + "id": 5141, "name": "IHyperdrive.PoolConfig", "nameLocations": [ "2833:11:10", "2845:10:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6268, + "referencedDeclaration": 6792, "src": "2833:22:10" }, - "referencedDeclaration": 6268, + "referencedDeclaration": 6792, "src": "2833:22:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_storage_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_storage_ptr", "typeString": "struct IHyperdrive.PoolConfig" } }, @@ -3128,12 +3156,12 @@ }, { "constant": false, - "id": 4569, + "id": 5146, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4608, + "scope": 5185, "src": "2880:16:10", "stateVariable": false, "storageLocation": "memory", @@ -3143,7 +3171,7 @@ }, "typeName": { "baseType": { - "id": 4567, + "id": 5144, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2880:7:10", @@ -3152,7 +3180,7 @@ "typeString": "bytes32" } }, - "id": 4568, + "id": 5145, "nodeType": "ArrayTypeName", "src": "2880:9:10", "typeDescriptions": { @@ -3164,12 +3192,12 @@ }, { "constant": false, - "id": 4571, + "id": 5148, "mutability": "mutable", "name": "_contribution", "nameLocation": "2914:13:10", "nodeType": "VariableDeclaration", - "scope": 4608, + "scope": 5185, "src": "2906:21:10", "stateVariable": false, "storageLocation": "default", @@ -3178,7 +3206,7 @@ "typeString": "uint256" }, "typeName": { - "id": 4570, + "id": 5147, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2906:7:10", @@ -3191,12 +3219,12 @@ }, { "constant": false, - "id": 4573, + "id": 5150, "mutability": "mutable", "name": "_apr", "nameLocation": "2945:4:10", "nodeType": "VariableDeclaration", - "scope": 4608, + "scope": 5185, "src": "2937:12:10", "stateVariable": false, "storageLocation": "default", @@ -3205,7 +3233,7 @@ "typeString": "uint256" }, "typeName": { - "id": 4572, + "id": 5149, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2937:7:10", @@ -3220,41 +3248,41 @@ "src": "2823:132:10" }, "returnParameters": { - "id": 4579, + "id": 5156, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4578, + "id": 5155, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4608, + "scope": 5185, "src": "2989:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$6429", + "typeIdentifier": "t_contract$_IHyperdrive_$6959", "typeString": "contract IHyperdrive" }, "typeName": { - "id": 4577, + "id": 5154, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4576, + "id": 5153, "name": "IHyperdrive", "nameLocations": [ "2989:11:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6429, + "referencedDeclaration": 6959, "src": "2989:11:10" }, - "referencedDeclaration": 6429, + "referencedDeclaration": 6959, "src": "2989:11:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IHyperdrive_$6429", + "typeIdentifier": "t_contract$_IHyperdrive_$6959", "typeString": "contract IHyperdrive" } }, @@ -3263,18 +3291,18 @@ ], "src": "2988:13:10" }, - "scope": 4650, + "scope": 5227, "stateMutability": "payable", "virtual": false, "visibility": "public" }, { - "id": 4639, + "id": 5216, "nodeType": "FunctionDefinition", "src": "3846:464:10", "nodes": [], "body": { - "id": 4638, + "id": 5215, "nodeType": "Block", "src": "4054:256:10", "nodes": [], @@ -3287,23 +3315,23 @@ { "arguments": [ { - "id": 4630, + "id": 5207, "name": "_config", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4612, + "referencedDeclaration": 5189, "src": "4155:7:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" } }, { - "id": 4631, + "id": 5208, "name": "_linkerCodeHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4617, + "referencedDeclaration": 5194, "src": "4184:15:10", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3311,11 +3339,11 @@ } }, { - "id": 4632, + "id": 5209, "name": "_linkerFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4619, + "referencedDeclaration": 5196, "src": "4221:14:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3323,14 +3351,14 @@ } }, { - "id": 4633, + "id": 5210, "name": "pool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4509, + "referencedDeclaration": 5086, "src": "4257:4:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } } @@ -3338,7 +3366,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig memory" }, { @@ -3350,11 +3378,11 @@ "typeString": "address" }, { - "typeIdentifier": "t_contract$_IERC4626_$6060", + "typeIdentifier": "t_contract$_IERC4626_$6578", "typeString": "contract IERC4626" } ], - "id": 4629, + "id": 5206, "isConstant": false, "isLValue": false, "isPure": false, @@ -3362,31 +3390,31 @@ "nodeType": "NewExpression", "src": "4110:23:10", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6268_memory_ptr_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6060_$returns$_t_contract$_ERC4626DataProvider_$5393_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_struct$_PoolConfig_$6792_memory_ptr_$_t_bytes32_$_t_address_$_t_contract$_IERC4626_$6578_$returns$_t_contract$_ERC4626DataProvider_$5970_$", "typeString": "function (struct IHyperdrive.PoolConfig memory,bytes32,address,contract IERC4626) returns (contract ERC4626DataProvider)" }, "typeName": { - "id": 4628, + "id": 5205, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4627, + "id": 5204, "name": "ERC4626DataProvider", "nameLocations": [ "4114:19:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5393, + "referencedDeclaration": 5970, "src": "4114:19:10" }, - "referencedDeclaration": 5393, + "referencedDeclaration": 5970, "src": "4114:19:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626DataProvider_$5393", + "typeIdentifier": "t_contract$_ERC4626DataProvider_$5970", "typeString": "contract ERC4626DataProvider" } } }, - "id": 4634, + "id": 5211, "isConstant": false, "isLValue": false, "isPure": false, @@ -3398,7 +3426,7 @@ "src": "4110:169:10", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC4626DataProvider_$5393", + "typeIdentifier": "t_contract$_ERC4626DataProvider_$5970", "typeString": "contract ERC4626DataProvider" } } @@ -3406,11 +3434,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC4626DataProvider_$5393", + "typeIdentifier": "t_contract$_ERC4626DataProvider_$5970", "typeString": "contract ERC4626DataProvider" } ], - "id": 4626, + "id": 5203, "isConstant": false, "isLValue": false, "isPure": true, @@ -3422,14 +3450,14 @@ "typeString": "type(address)" }, "typeName": { - "id": 4625, + "id": 5202, "name": "address", "nodeType": "ElementaryTypeName", "src": "4085:7:10", "typeDescriptions": {} } }, - "id": 4635, + "id": 5212, "isConstant": false, "isLValue": false, "isPure": false, @@ -3446,7 +3474,7 @@ } } ], - "id": 4636, + "id": 5213, "isConstant": false, "isInlineArray": false, "isLValue": false, @@ -3459,18 +3487,18 @@ "typeString": "address" } }, - "functionReturnParameters": 4624, - "id": 4637, + "functionReturnParameters": 5201, + "id": 5214, "nodeType": "Return", "src": "4064:239:10" } ] }, "baseFunctions": [ - 5278 + 5855 ], "documentation": { - "id": 4609, + "id": 5186, "nodeType": "StructuredDocumentation", "src": "3552:289:10", "text": "@notice This deploys a data provider for the ERC4626 hyperdrive instance\n @param _config The configuration of the pool we are deploying\n @param _linkerCodeHash The code hash from the multitoken deployer\n @param _linkerFactory The factory of the multitoken deployer" @@ -3481,48 +3509,48 @@ "name": "deployDataProvider", "nameLocation": "3855:18:10", "overrides": { - "id": 4621, + "id": 5198, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4027:8:10" }, "parameters": { - "id": 4620, + "id": 5197, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4612, + "id": 5189, "mutability": "mutable", "name": "_config", "nameLocation": "3913:7:10", "nodeType": "VariableDeclaration", - "scope": 4639, + "scope": 5216, "src": "3883:37:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_memory_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_memory_ptr", "typeString": "struct IHyperdrive.PoolConfig" }, "typeName": { - "id": 4611, + "id": 5188, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 4610, + "id": 5187, "name": "IHyperdrive.PoolConfig", "nameLocations": [ "3883:11:10", "3895:10:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6268, + "referencedDeclaration": 6792, "src": "3883:22:10" }, - "referencedDeclaration": 6268, + "referencedDeclaration": 6792, "src": "3883:22:10", "typeDescriptions": { - "typeIdentifier": "t_struct$_PoolConfig_$6268_storage_ptr", + "typeIdentifier": "t_struct$_PoolConfig_$6792_storage_ptr", "typeString": "struct IHyperdrive.PoolConfig" } }, @@ -3530,12 +3558,12 @@ }, { "constant": false, - "id": 4615, + "id": 5192, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4639, + "scope": 5216, "src": "3930:16:10", "stateVariable": false, "storageLocation": "memory", @@ -3545,7 +3573,7 @@ }, "typeName": { "baseType": { - "id": 4613, + "id": 5190, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3930:7:10", @@ -3554,7 +3582,7 @@ "typeString": "bytes32" } }, - "id": 4614, + "id": 5191, "nodeType": "ArrayTypeName", "src": "3930:9:10", "typeDescriptions": { @@ -3566,12 +3594,12 @@ }, { "constant": false, - "id": 4617, + "id": 5194, "mutability": "mutable", "name": "_linkerCodeHash", "nameLocation": "3964:15:10", "nodeType": "VariableDeclaration", - "scope": 4639, + "scope": 5216, "src": "3956:23:10", "stateVariable": false, "storageLocation": "default", @@ -3580,7 +3608,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 4616, + "id": 5193, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3956:7:10", @@ -3593,12 +3621,12 @@ }, { "constant": false, - "id": 4619, + "id": 5196, "mutability": "mutable", "name": "_linkerFactory", "nameLocation": "3997:14:10", "nodeType": "VariableDeclaration", - "scope": 4639, + "scope": 5216, "src": "3989:22:10", "stateVariable": false, "storageLocation": "default", @@ -3607,7 +3635,7 @@ "typeString": "address" }, "typeName": { - "id": 4618, + "id": 5195, "name": "address", "nodeType": "ElementaryTypeName", "src": "3989:7:10", @@ -3623,17 +3651,17 @@ "src": "3873:144:10" }, "returnParameters": { - "id": 4624, + "id": 5201, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4623, + "id": 5200, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4639, + "scope": 5216, "src": "4045:7:10", "stateVariable": false, "storageLocation": "default", @@ -3642,7 +3670,7 @@ "typeString": "address" }, "typeName": { - "id": 4622, + "id": 5199, "name": "address", "nodeType": "ElementaryTypeName", "src": "4045:7:10", @@ -3657,44 +3685,44 @@ ], "src": "4044:9:10" }, - "scope": 4650, + "scope": 5227, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 4649, + "id": 5226, "nodeType": "FunctionDefinition", "src": "4391:105:10", "nodes": [], "body": { - "id": 4648, + "id": 5225, "nodeType": "Block", "src": "4459:37:10", "nodes": [], "statements": [ { "expression": { - "id": 4646, + "id": 5223, "name": "_sweepTargets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4513, + "referencedDeclaration": 5090, "src": "4476:13:10", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "functionReturnParameters": 4645, - "id": 4647, + "functionReturnParameters": 5222, + "id": 5224, "nodeType": "Return", "src": "4469:20:10" } ] }, "documentation": { - "id": 4640, + "id": 5217, "nodeType": "StructuredDocumentation", "src": "4316:70:10", "text": "@notice Gets the sweep targets.\n @return The sweep targets." @@ -3706,23 +3734,23 @@ "name": "getSweepTargets", "nameLocation": "4400:15:10", "parameters": { - "id": 4641, + "id": 5218, "nodeType": "ParameterList", "parameters": [], "src": "4415:2:10" }, "returnParameters": { - "id": 4645, + "id": 5222, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4644, + "id": 5221, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 4649, + "scope": 5226, "src": "4441:16:10", "stateVariable": false, "storageLocation": "memory", @@ -3732,7 +3760,7 @@ }, "typeName": { "baseType": { - "id": 4642, + "id": 5219, "name": "address", "nodeType": "ElementaryTypeName", "src": "4441:7:10", @@ -3742,7 +3770,7 @@ "typeString": "address" } }, - "id": 4643, + "id": 5220, "nodeType": "ArrayTypeName", "src": "4441:9:10", "typeDescriptions": { @@ -3755,7 +3783,7 @@ ], "src": "4440:18:10" }, - "scope": 4650, + "scope": 5227, "stateMutability": "view", "virtual": false, "visibility": "external" @@ -3765,45 +3793,45 @@ "baseContracts": [ { "baseName": { - "id": 4504, + "id": 5081, "name": "HyperdriveFactory", "nameLocations": [ "898:17:10" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 5289, + "referencedDeclaration": 5866, "src": "898:17:10" }, - "id": 4505, + "id": 5082, "nodeType": "InheritanceSpecifier", "src": "898:17:10" } ], "canonicalName": "ERC4626HyperdriveFactory", "contractDependencies": [ - 5393 + 5970 ], "contractKind": "contract", "documentation": { - "id": 4503, + "id": 5080, "nodeType": "StructuredDocumentation", "src": "446:415:10", "text": "@author DELV\n @title ERC4626HyperdriveFactory\n @notice Deploys hyperdrive instances and initializes them. It also holds a\n registry of all deployed hyperdrive instances.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 4650, - 5289 + 5227, + 5866 ], "name": "ERC4626HyperdriveFactory", "nameLocation": "870:24:10", - "scope": 4651, + "scope": 5228, "usedErrors": [ - 6357, - 6382, - 6388, - 6390, - 6392 + 6842, + 6913, + 6919, + 6921, + 6923 ] } ], diff --git a/packages/hyperdrive/src/abis/ForwarderFactory.sol/ForwarderFactory.json b/packages/hyperdrive/src/abis/ForwarderFactory.sol/ForwarderFactory.json index 3ddc67f291..e902665b03 100644 --- a/packages/hyperdrive/src/abis/ForwarderFactory.sol/ForwarderFactory.json +++ b/packages/hyperdrive/src/abis/ForwarderFactory.sol/ForwarderFactory.json @@ -86,13 +86,13 @@ } ], "bytecode": { - "object": "0x6080604052600080546001600160a01b0319166001908117909155805534801561002857600080fd5b506115ff806100386000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630710fd58146100515780630ecaea7314610081578063600eb4ba14610094578063d13053bb146100ca575b600080fd5b61006461005f3660046102b9565b6100e0565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046102b9565b6101b5565b6100ab6000546001546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610078565b6100d261027f565b604051908152602001610078565b604080516001600160a01b03841660208201529081018290526000908190606001604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001610132906102ac565b6020820181038252601f19601f820116604052508051906020012060405160200161019494939291906001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f19018152919052805160209091012095945050505050565b6001819055600080546001600160a01b0319166001600160a01b038416908117825560408051602081019290925281018390528190606001604051602081830303815290604052805190602001209050600081604051610214906102ac565b8190604051809103906000f5905080158015610234573d6000803e3d6000fd5b50905061024185856100e0565b6001600160a01b0316816001600160a01b03161461025e57600080fd5b600080546001600160a01b0319166001908117909155805591505092915050565b60405161028e602082016102ac565b6020820181038252601f19601f820116604052508051906020012081565b6112d8806102f283390190565b600080604083850312156102cc57600080fd5b82356001600160a01b03811681146102e357600080fd5b94602093909301359350505056fe60e06040523480156200001157600080fd5b50604080516330075a5d60e11b815281513392839263600eb4ba926004808301939282900301816000875af11580156200004f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200007591906200019c565b60a08190526001600160a01b039091166080819052604051622b600360e21b81527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9262ad800c91620000cf919060040190815260200190565b600060405180830381865afa158015620000ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001179190810190620001ee565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152919052805160209091012060c05250620002c3565b60008060408385031215620001b057600080fd5b82516001600160a01b0381168114620001c857600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200020257600080fd5b82516001600160401b03808211156200021a57600080fd5b818501915085601f8301126200022f57600080fd5b815181811115620002445762000244620001d8565b604051601f8201601f19908116603f011681019083821181831017156200026f576200026f620001d8565b8160405282815288868487010111156200028857600080fd5b600093505b82841015620002ac57848401860151818501870152928501926200028d565b600086848301015280965050505050505092915050565b60805160a05160c051610f596200037f600039600081816101c601526108fc015260008181610140015281816102ab0152818161035f0152818161045d015281816105080152818161061a015281816106cf0152818161073e01528181610a0d0152610bb3015260008181610263015281816102d4015281816103a5015281816104860152818161055601528181610653015281816106f80152818161078e01528181610a4a01528181610b290152610bf10152610f596000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80633644e51511610097578063a9059cbb11610066578063a9059cbb14610223578063d505accf14610236578063dd62ed3e1461024b578063fc0c546a1461025e57600080fd5b80633644e515146101c157806370a08231146101e85780637ecebe00146101fb57806395d89b411461021b57600080fd5b806318160ddd116100d357806318160ddd1461017057806323b872dd1461017857806330adf81f1461018b578063313ce567146101b257600080fd5b806306fdde03146100fa578063095ea7b31461011857806317d70f7c1461013b575b600080fd5b61010261029d565b60405161010f9190610c87565b60405180910390f35b61012b610126366004610cd6565b610350565b604051901515815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161010f565b61016261044e565b61012b610186366004610d00565b6104f9565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6040516012815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b6101626101f6366004610d3c565b61060b565b610162610209366004610d3c565b60006020819052908152604090205481565b6101026106c0565b61012b610231366004610cd6565b61072f565b610249610244366004610d5e565b610829565b005b610162610259366004610dd1565b610aff565b6102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010f565b604051622b600360e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062ad800c906024015b600060405180830381865afa158015610323573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034b9190810190610e1a565b905090565b6040516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038381166024830152604482018390523360648301526000917f000000000000000000000000000000000000000000000000000000000000000090911690634ed2d6ac90608401600060405180830381600087803b1580156103eb57600080fd5b505af11580156103ff573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906020015b60405180910390a35060015b92915050565b60405163bd85b03960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990602401602060405180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190610ec7565b604051633912022f60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0384811660248301528381166044830152606482018390523360848301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b15801561059c57600080fd5b505af11580156105b0573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f991815260200190565b60405180910390a35060019392505050565b604051631b2b776160e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633656eec290604401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190610ec7565b604051634e41a1fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634e41a1fb90602401610306565b604051633912022f60e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015233602482018190526001600160a01b0384811660448401526064830184905260848301919091526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161043c565b8342111561084a5760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166108715760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b038781166000818152602081815260408083205481517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e08501909152805191012061190160f01b6101008401527f0000000000000000000000000000000000000000000000000000000000000000610102840152610122830152906101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610997573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146109d557604051638baa579f60e01b815260040160405180910390fd5b6109e0836001610ee0565b6001600160a01b03808c16600081815260208190526040908190209390935591516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201528b82166024820152604481018b905260648101929092527f00000000000000000000000000000000000000000000000000000000000000001690634ed2d6ac90608401600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050886001600160a01b03168a6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258a604051610aeb91815260200190565b60405180910390a350505050505050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e985e9c590604401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190610f01565b15610ba45750600019610448565b6040516321ff32a960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b03848116602483015283811660448301527f000000000000000000000000000000000000000000000000000000000000000016906321ff32a990606401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190610ec7565b9050610448565b60005b83811015610c7e578181015183820152602001610c66565b50506000910152565b6020815260008251806020840152610ca6816040850160208701610c63565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610cd157600080fd5b919050565b60008060408385031215610ce957600080fd5b610cf283610cba565b946020939093013593505050565b600080600060608486031215610d1557600080fd5b610d1e84610cba565b9250610d2c60208501610cba565b9150604084013590509250925092565b600060208284031215610d4e57600080fd5b610d5782610cba565b9392505050565b600080600080600080600060e0888a031215610d7957600080fd5b610d8288610cba565b9650610d9060208901610cba565b95506040880135945060608801359350608088013560ff81168114610db457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610de457600080fd5b610ded83610cba565b9150610dfb60208401610cba565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610e2c57600080fd5b815167ffffffffffffffff80821115610e4457600080fd5b818401915084601f830112610e5857600080fd5b815181811115610e6a57610e6a610e04565b604051601f8201601f19908116603f01168101908382118183101715610e9257610e92610e04565b81604052828152876020848701011115610eab57600080fd5b610ebc836020830160208801610c63565b979650505050505050565b600060208284031215610ed957600080fd5b5051919050565b8082018082111561044857634e487b7160e01b600052601160045260246000fd5b600060208284031215610f1357600080fd5b81518015158114610d5757600080fdfea264697066735822122012ee2ac1086e5771c9aacf86712396635aae5c13f1190c90e951ab193a4faf1964736f6c63430008130033a26469706673582212201e58c43e4f2eb0b573d6782218422960a22b9d7d3a07bcbb361897585f2bffc964736f6c63430008130033", - "sourceMap": "907:2664:37:-:0;;;1091:52;;;-1:-1:-1;;;;;;1091:52:37;1140:1;1091:52;;;;;;1149:28;;1305:16;;;;;;;;;;907:2664;;;;;;", + "object": "0x6080604052600080546001600160a01b0319166001908117909155805534801561002857600080fd5b506115ff806100386000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630710fd58146100515780630ecaea7314610081578063600eb4ba14610094578063d13053bb146100ca575b600080fd5b61006461005f3660046102b9565b6100e0565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046102b9565b6101b5565b6100ab6000546001546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610078565b6100d261027f565b604051908152602001610078565b604080516001600160a01b03841660208201529081018290526000908190606001604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001610132906102ac565b6020820181038252601f19601f820116604052508051906020012060405160200161019494939291906001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f19018152919052805160209091012095945050505050565b6001819055600080546001600160a01b0319166001600160a01b038416908117825560408051602081019290925281018390528190606001604051602081830303815290604052805190602001209050600081604051610214906102ac565b8190604051809103906000f5905080158015610234573d6000803e3d6000fd5b50905061024185856100e0565b6001600160a01b0316816001600160a01b03161461025e57600080fd5b600080546001600160a01b0319166001908117909155805591505092915050565b60405161028e602082016102ac565b6020820181038252601f19601f820116604052508051906020012081565b6112d8806102f283390190565b600080604083850312156102cc57600080fd5b82356001600160a01b03811681146102e357600080fd5b94602093909301359350505056fe60e06040523480156200001157600080fd5b50604080516330075a5d60e11b815281513392839263600eb4ba926004808301939282900301816000875af11580156200004f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200007591906200019c565b60a08190526001600160a01b039091166080819052604051622b600360e21b81527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9262ad800c91620000cf919060040190815260200190565b600060405180830381865afa158015620000ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001179190810190620001ee565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152919052805160209091012060c05250620002c3565b60008060408385031215620001b057600080fd5b82516001600160a01b0381168114620001c857600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200020257600080fd5b82516001600160401b03808211156200021a57600080fd5b818501915085601f8301126200022f57600080fd5b815181811115620002445762000244620001d8565b604051601f8201601f19908116603f011681019083821181831017156200026f576200026f620001d8565b8160405282815288868487010111156200028857600080fd5b600093505b82841015620002ac57848401860151818501870152928501926200028d565b600086848301015280965050505050505092915050565b60805160a05160c051610f596200037f600039600081816101c601526108fc015260008181610140015281816102ab0152818161035f0152818161045d015281816105080152818161061a015281816106cf0152818161073e01528181610a0d0152610bb3015260008181610263015281816102d4015281816103a5015281816104860152818161055601528181610653015281816106f80152818161078e01528181610a4a01528181610b290152610bf10152610f596000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80633644e51511610097578063a9059cbb11610066578063a9059cbb14610223578063d505accf14610236578063dd62ed3e1461024b578063fc0c546a1461025e57600080fd5b80633644e515146101c157806370a08231146101e85780637ecebe00146101fb57806395d89b411461021b57600080fd5b806318160ddd116100d357806318160ddd1461017057806323b872dd1461017857806330adf81f1461018b578063313ce567146101b257600080fd5b806306fdde03146100fa578063095ea7b31461011857806317d70f7c1461013b575b600080fd5b61010261029d565b60405161010f9190610c87565b60405180910390f35b61012b610126366004610cd6565b610350565b604051901515815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161010f565b61016261044e565b61012b610186366004610d00565b6104f9565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6040516012815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b6101626101f6366004610d3c565b61060b565b610162610209366004610d3c565b60006020819052908152604090205481565b6101026106c0565b61012b610231366004610cd6565b61072f565b610249610244366004610d5e565b610829565b005b610162610259366004610dd1565b610aff565b6102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010f565b604051622b600360e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062ad800c906024015b600060405180830381865afa158015610323573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034b9190810190610e1a565b905090565b6040516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038381166024830152604482018390523360648301526000917f000000000000000000000000000000000000000000000000000000000000000090911690634ed2d6ac90608401600060405180830381600087803b1580156103eb57600080fd5b505af11580156103ff573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906020015b60405180910390a35060015b92915050565b60405163bd85b03960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990602401602060405180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190610ec7565b604051633912022f60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0384811660248301528381166044830152606482018390523360848301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b15801561059c57600080fd5b505af11580156105b0573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f991815260200190565b60405180910390a35060019392505050565b604051631b2b776160e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633656eec290604401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190610ec7565b604051634e41a1fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634e41a1fb90602401610306565b604051633912022f60e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015233602482018190526001600160a01b0384811660448401526064830184905260848301919091526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161043c565b8342111561084a5760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166108715760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b038781166000818152602081815260408083205481517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e08501909152805191012061190160f01b6101008401527f0000000000000000000000000000000000000000000000000000000000000000610102840152610122830152906101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610997573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146109d557604051638baa579f60e01b815260040160405180910390fd5b6109e0836001610ee0565b6001600160a01b03808c16600081815260208190526040908190209390935591516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201528b82166024820152604481018b905260648101929092527f00000000000000000000000000000000000000000000000000000000000000001690634ed2d6ac90608401600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050886001600160a01b03168a6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258a604051610aeb91815260200190565b60405180910390a350505050505050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e985e9c590604401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190610f01565b15610ba45750600019610448565b6040516321ff32a960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b03848116602483015283811660448301527f000000000000000000000000000000000000000000000000000000000000000016906321ff32a990606401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190610ec7565b9050610448565b60005b83811015610c7e578181015183820152602001610c66565b50506000910152565b6020815260008251806020840152610ca6816040850160208701610c63565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610cd157600080fd5b919050565b60008060408385031215610ce957600080fd5b610cf283610cba565b946020939093013593505050565b600080600060608486031215610d1557600080fd5b610d1e84610cba565b9250610d2c60208501610cba565b9150604084013590509250925092565b600060208284031215610d4e57600080fd5b610d5782610cba565b9392505050565b600080600080600080600060e0888a031215610d7957600080fd5b610d8288610cba565b9650610d9060208901610cba565b95506040880135945060608801359350608088013560ff81168114610db457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610de457600080fd5b610ded83610cba565b9150610dfb60208401610cba565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610e2c57600080fd5b815167ffffffffffffffff80821115610e4457600080fd5b818401915084601f830112610e5857600080fd5b815181811115610e6a57610e6a610e04565b604051601f8201601f19908116603f01168101908382118183101715610e9257610e92610e04565b81604052828152876020848701011115610eab57600080fd5b610ebc836020830160208801610c63565b979650505050505050565b600060208284031215610ed957600080fd5b5051919050565b8082018082111561044857634e487b7160e01b600052601160045260246000fd5b600060208284031215610f1357600080fd5b81518015158114610d5757600080fdfea2646970667358221220f5f059826d82fe0ab994364a40568e817aeada24d0dfc742035ebd6f08ab269364736f6c63430008130033a26469706673582212200f383b7c2acaa5cf3060e48a490c277e85e516dbb5741bcfbd91d6ff1972144364736f6c63430008130033", + "sourceMap": "907:2664:33:-:0;;;1091:52;;;-1:-1:-1;;;;;;1091:52:33;1140:1;1091:52;;;;;;1149:28;;1305:16;;;;;;;;;;907:2664;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630710fd58146100515780630ecaea7314610081578063600eb4ba14610094578063d13053bb146100ca575b600080fd5b61006461005f3660046102b9565b6100e0565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046102b9565b6101b5565b6100ab6000546001546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610078565b6100d261027f565b604051908152602001610078565b604080516001600160a01b03841660208201529081018290526000908190606001604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001610132906102ac565b6020820181038252601f19601f820116604052508051906020012060405160200161019494939291906001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f19018152919052805160209091012095945050505050565b6001819055600080546001600160a01b0319166001600160a01b038416908117825560408051602081019290925281018390528190606001604051602081830303815290604052805190602001209050600081604051610214906102ac565b8190604051809103906000f5905080158015610234573d6000803e3d6000fd5b50905061024185856100e0565b6001600160a01b0316816001600160a01b03161461025e57600080fd5b600080546001600160a01b0319166001908117909155805591505092915050565b60405161028e602082016102ac565b6020820181038252601f19601f820116604052508051906020012081565b6112d8806102f283390190565b600080604083850312156102cc57600080fd5b82356001600160a01b03811681146102e357600080fd5b94602093909301359350505056fe60e06040523480156200001157600080fd5b50604080516330075a5d60e11b815281513392839263600eb4ba926004808301939282900301816000875af11580156200004f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200007591906200019c565b60a08190526001600160a01b039091166080819052604051622b600360e21b81527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9262ad800c91620000cf919060040190815260200190565b600060405180830381865afa158015620000ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001179190810190620001ee565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152919052805160209091012060c05250620002c3565b60008060408385031215620001b057600080fd5b82516001600160a01b0381168114620001c857600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200020257600080fd5b82516001600160401b03808211156200021a57600080fd5b818501915085601f8301126200022f57600080fd5b815181811115620002445762000244620001d8565b604051601f8201601f19908116603f011681019083821181831017156200026f576200026f620001d8565b8160405282815288868487010111156200028857600080fd5b600093505b82841015620002ac57848401860151818501870152928501926200028d565b600086848301015280965050505050505092915050565b60805160a05160c051610f596200037f600039600081816101c601526108fc015260008181610140015281816102ab0152818161035f0152818161045d015281816105080152818161061a015281816106cf0152818161073e01528181610a0d0152610bb3015260008181610263015281816102d4015281816103a5015281816104860152818161055601528181610653015281816106f80152818161078e01528181610a4a01528181610b290152610bf10152610f596000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80633644e51511610097578063a9059cbb11610066578063a9059cbb14610223578063d505accf14610236578063dd62ed3e1461024b578063fc0c546a1461025e57600080fd5b80633644e515146101c157806370a08231146101e85780637ecebe00146101fb57806395d89b411461021b57600080fd5b806318160ddd116100d357806318160ddd1461017057806323b872dd1461017857806330adf81f1461018b578063313ce567146101b257600080fd5b806306fdde03146100fa578063095ea7b31461011857806317d70f7c1461013b575b600080fd5b61010261029d565b60405161010f9190610c87565b60405180910390f35b61012b610126366004610cd6565b610350565b604051901515815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161010f565b61016261044e565b61012b610186366004610d00565b6104f9565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6040516012815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b6101626101f6366004610d3c565b61060b565b610162610209366004610d3c565b60006020819052908152604090205481565b6101026106c0565b61012b610231366004610cd6565b61072f565b610249610244366004610d5e565b610829565b005b610162610259366004610dd1565b610aff565b6102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010f565b604051622b600360e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062ad800c906024015b600060405180830381865afa158015610323573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034b9190810190610e1a565b905090565b6040516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038381166024830152604482018390523360648301526000917f000000000000000000000000000000000000000000000000000000000000000090911690634ed2d6ac90608401600060405180830381600087803b1580156103eb57600080fd5b505af11580156103ff573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906020015b60405180910390a35060015b92915050565b60405163bd85b03960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990602401602060405180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190610ec7565b604051633912022f60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0384811660248301528381166044830152606482018390523360848301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b15801561059c57600080fd5b505af11580156105b0573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f991815260200190565b60405180910390a35060019392505050565b604051631b2b776160e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633656eec290604401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190610ec7565b604051634e41a1fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634e41a1fb90602401610306565b604051633912022f60e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015233602482018190526001600160a01b0384811660448401526064830184905260848301919091526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161043c565b8342111561084a5760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166108715760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b038781166000818152602081815260408083205481517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e08501909152805191012061190160f01b6101008401527f0000000000000000000000000000000000000000000000000000000000000000610102840152610122830152906101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610997573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146109d557604051638baa579f60e01b815260040160405180910390fd5b6109e0836001610ee0565b6001600160a01b03808c16600081815260208190526040908190209390935591516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201528b82166024820152604481018b905260648101929092527f00000000000000000000000000000000000000000000000000000000000000001690634ed2d6ac90608401600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050886001600160a01b03168a6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258a604051610aeb91815260200190565b60405180910390a350505050505050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e985e9c590604401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190610f01565b15610ba45750600019610448565b6040516321ff32a960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b03848116602483015283811660448301527f000000000000000000000000000000000000000000000000000000000000000016906321ff32a990606401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190610ec7565b9050610448565b60005b83811015610c7e578181015183820152602001610c66565b50506000910152565b6020815260008251806020840152610ca6816040850160208701610c63565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610cd157600080fd5b919050565b60008060408385031215610ce957600080fd5b610cf283610cba565b946020939093013593505050565b600080600060608486031215610d1557600080fd5b610d1e84610cba565b9250610d2c60208501610cba565b9150604084013590509250925092565b600060208284031215610d4e57600080fd5b610d5782610cba565b9392505050565b600080600080600080600060e0888a031215610d7957600080fd5b610d8288610cba565b9650610d9060208901610cba565b95506040880135945060608801359350608088013560ff81168114610db457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610de457600080fd5b610ded83610cba565b9150610dfb60208401610cba565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610e2c57600080fd5b815167ffffffffffffffff80821115610e4457600080fd5b818401915084601f830112610e5857600080fd5b815181811115610e6a57610e6a610e04565b604051601f8201601f19908116603f01168101908382118183101715610e9257610e92610e04565b81604052828152876020848701011115610eab57600080fd5b610ebc836020830160208801610c63565b979650505050505050565b600060208284031215610ed957600080fd5b5051919050565b8082018082111561044857634e487b7160e01b600052601160045260246000fd5b600060208284031215610f1357600080fd5b81518015158114610d5757600080fdfea264697066735822122012ee2ac1086e5771c9aacf86712396635aae5c13f1190c90e951ab193a4faf1964736f6c63430008130033a26469706673582212201e58c43e4f2eb0b573d6782218422960a22b9d7d3a07bcbb361897585f2bffc964736f6c63430008130033", - "sourceMap": "907:2664:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3085:484;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;557:32:156;;;539:51;;527:2;512:18;3085:484:37;;;;;;;;1771:783;;;;;;:::i;:::-;;:::i;2698:115::-;;2749:11;2789:6;;2797:8;-1:-1:-1;;;;;2789:6:37;;;;2698:115;;;;;-1:-1:-1;;;;;1045:32:156;;;1027:51;;1109:2;1094:18;;1087:34;;;;1000:18;2698:115:37;833:294:156;1205:93:37;;;:::i;:::-;;;1278:25:156;;;1266:2;1251:18;1205:93:37;1132:177:156;3085:484:37;3286:26;;;-1:-1:-1;;;;;1045:32:156;;3286:26:37;;;1027:51:156;1094:18;;;1087:34;;;3186:7:37;;;;1000:18:156;;3286:26:37;;;;;;;;;;;;3276:37;;;;;;3261:52;;3323:20;3393:4;3386:12;;3408:4;3415;1264:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1254:44;;;;;;3369:67;;;;;;;;;;-1:-1:-1;;;;;;1537:26:156;;;;1525:39;;1601:2;1597:15;;;;-1:-1:-1;;1593:53:156;1589:1;1580:11;;1573:74;1672:2;1663:12;;1656:28;1709:2;1700:12;;1693:28;1746:2;1737:12;;1314:441;3369:67:37;;;;;;;-1:-1:-1;;3369:67:37;;;;;;3346:100;;3369:67;3346:100;;;;;3085:484;-1:-1:-1;;;;;3085:484:37:o;1771:783::-;1948:8;:18;;;1863:14;1976;;-1:-1:-1;;;;;;1976:14:37;-1:-1:-1;;;;;1976:14:37;;;;;;;2089:26;;;;;;1027:51:156;;;;1094:18;;1087:34;;;1863:14:37;;1000:18:156;;2089:26:37;;;;;;;;;;;;2079:37;;;;;;2064:52;;2173:23;2225:4;2199:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:60;;2349:28;2362:5;2369:7;2349:12;:28::i;:::-;-1:-1:-1;;;;;2328:49:37;2336:8;-1:-1:-1;;;;;2328:49:37;;2320:58;;;;;;2425:6;:32;;-1:-1:-1;;;;;;2425:32:37;2454:1;2425:32;;;;;;2467:12;;2538:8;-1:-1:-1;;1771:783:37;;;;:::o;1205:93::-;1264:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1254:44;;;;;;1205:93;:::o;-1:-1:-1:-;;;;;;;;:::o;14:374:156:-;102:6;110;163:2;151:9;142:7;138:23;134:32;131:52;;;179:1;176;169:12;131:52;205:23;;-1:-1:-1;;;;;257:31:156;;247:42;;237:70;;303:1;300;293:12;237:70;326:5;378:2;363:18;;;;350:32;;-1:-1:-1;;;14:374:156:o", + "object": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630710fd58146100515780630ecaea7314610081578063600eb4ba14610094578063d13053bb146100ca575b600080fd5b61006461005f3660046102b9565b6100e0565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046102b9565b6101b5565b6100ab6000546001546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610078565b6100d261027f565b604051908152602001610078565b604080516001600160a01b03841660208201529081018290526000908190606001604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001610132906102ac565b6020820181038252601f19601f820116604052508051906020012060405160200161019494939291906001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f19018152919052805160209091012095945050505050565b6001819055600080546001600160a01b0319166001600160a01b038416908117825560408051602081019290925281018390528190606001604051602081830303815290604052805190602001209050600081604051610214906102ac565b8190604051809103906000f5905080158015610234573d6000803e3d6000fd5b50905061024185856100e0565b6001600160a01b0316816001600160a01b03161461025e57600080fd5b600080546001600160a01b0319166001908117909155805591505092915050565b60405161028e602082016102ac565b6020820181038252601f19601f820116604052508051906020012081565b6112d8806102f283390190565b600080604083850312156102cc57600080fd5b82356001600160a01b03811681146102e357600080fd5b94602093909301359350505056fe60e06040523480156200001157600080fd5b50604080516330075a5d60e11b815281513392839263600eb4ba926004808301939282900301816000875af11580156200004f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200007591906200019c565b60a08190526001600160a01b039091166080819052604051622b600360e21b81527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9262ad800c91620000cf919060040190815260200190565b600060405180830381865afa158015620000ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001179190810190620001ee565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152919052805160209091012060c05250620002c3565b60008060408385031215620001b057600080fd5b82516001600160a01b0381168114620001c857600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200020257600080fd5b82516001600160401b03808211156200021a57600080fd5b818501915085601f8301126200022f57600080fd5b815181811115620002445762000244620001d8565b604051601f8201601f19908116603f011681019083821181831017156200026f576200026f620001d8565b8160405282815288868487010111156200028857600080fd5b600093505b82841015620002ac57848401860151818501870152928501926200028d565b600086848301015280965050505050505092915050565b60805160a05160c051610f596200037f600039600081816101c601526108fc015260008181610140015281816102ab0152818161035f0152818161045d015281816105080152818161061a015281816106cf0152818161073e01528181610a0d0152610bb3015260008181610263015281816102d4015281816103a5015281816104860152818161055601528181610653015281816106f80152818161078e01528181610a4a01528181610b290152610bf10152610f596000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80633644e51511610097578063a9059cbb11610066578063a9059cbb14610223578063d505accf14610236578063dd62ed3e1461024b578063fc0c546a1461025e57600080fd5b80633644e515146101c157806370a08231146101e85780637ecebe00146101fb57806395d89b411461021b57600080fd5b806318160ddd116100d357806318160ddd1461017057806323b872dd1461017857806330adf81f1461018b578063313ce567146101b257600080fd5b806306fdde03146100fa578063095ea7b31461011857806317d70f7c1461013b575b600080fd5b61010261029d565b60405161010f9190610c87565b60405180910390f35b61012b610126366004610cd6565b610350565b604051901515815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161010f565b61016261044e565b61012b610186366004610d00565b6104f9565b6101627f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6040516012815260200161010f565b6101627f000000000000000000000000000000000000000000000000000000000000000081565b6101626101f6366004610d3c565b61060b565b610162610209366004610d3c565b60006020819052908152604090205481565b6101026106c0565b61012b610231366004610cd6565b61072f565b610249610244366004610d5e565b610829565b005b610162610259366004610dd1565b610aff565b6102857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010f565b604051622b600360e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062ad800c906024015b600060405180830381865afa158015610323573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261034b9190810190610e1a565b905090565b6040516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038381166024830152604482018390523360648301526000917f000000000000000000000000000000000000000000000000000000000000000090911690634ed2d6ac90608401600060405180830381600087803b1580156103eb57600080fd5b505af11580156103ff573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906020015b60405180910390a35060015b92915050565b60405163bd85b03960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990602401602060405180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190610ec7565b604051633912022f60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0384811660248301528381166044830152606482018390523360848301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b15801561059c57600080fd5b505af11580156105b0573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f991815260200190565b60405180910390a35060019392505050565b604051631b2b776160e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633656eec290604401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190610ec7565b604051634e41a1fb60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634e41a1fb90602401610306565b604051633912022f60e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015233602482018190526001600160a01b0384811660448401526064830184905260848301919091526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e44808bc9060a401600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b50506040518481526001600160a01b03861692503391507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161043c565b8342111561084a5760405163f87d927160e01b815260040160405180910390fd5b6001600160a01b0387166108715760405163f0dd15fd60e01b815260040160405180910390fd5b6001600160a01b038781166000818152602081815260408083205481517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e08501909152805191012061190160f01b6101008401527f0000000000000000000000000000000000000000000000000000000000000000610102840152610122830152906101420160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610997573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146109d557604051638baa579f60e01b815260040160405180910390fd5b6109e0836001610ee0565b6001600160a01b03808c16600081815260208190526040908190209390935591516313b4b5ab60e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201528b82166024820152604481018b905260648101929092527f00000000000000000000000000000000000000000000000000000000000000001690634ed2d6ac90608401600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050886001600160a01b03168a6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258a604051610aeb91815260200190565b60405180910390a350505050505050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e985e9c590604401602060405180830381865afa158015610b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b969190610f01565b15610ba45750600019610448565b6040516321ff32a960e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b03848116602483015283811660448301527f000000000000000000000000000000000000000000000000000000000000000016906321ff32a990606401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190610ec7565b9050610448565b60005b83811015610c7e578181015183820152602001610c66565b50506000910152565b6020815260008251806020840152610ca6816040850160208701610c63565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610cd157600080fd5b919050565b60008060408385031215610ce957600080fd5b610cf283610cba565b946020939093013593505050565b600080600060608486031215610d1557600080fd5b610d1e84610cba565b9250610d2c60208501610cba565b9150604084013590509250925092565b600060208284031215610d4e57600080fd5b610d5782610cba565b9392505050565b600080600080600080600060e0888a031215610d7957600080fd5b610d8288610cba565b9650610d9060208901610cba565b95506040880135945060608801359350608088013560ff81168114610db457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610de457600080fd5b610ded83610cba565b9150610dfb60208401610cba565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610e2c57600080fd5b815167ffffffffffffffff80821115610e4457600080fd5b818401915084601f830112610e5857600080fd5b815181811115610e6a57610e6a610e04565b604051601f8201601f19908116603f01168101908382118183101715610e9257610e92610e04565b81604052828152876020848701011115610eab57600080fd5b610ebc836020830160208801610c63565b979650505050505050565b600060208284031215610ed957600080fd5b5051919050565b8082018082111561044857634e487b7160e01b600052601160045260246000fd5b600060208284031215610f1357600080fd5b81518015158114610d5757600080fdfea2646970667358221220f5f059826d82fe0ab994364a40568e817aeada24d0dfc742035ebd6f08ab269364736f6c63430008130033a26469706673582212200f383b7c2acaa5cf3060e48a490c277e85e516dbb5741bcfbd91d6ff1972144364736f6c63430008130033", + "sourceMap": "907:2664:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3085:484;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;557:32:158;;;539:51;;527:2;512:18;3085:484:33;;;;;;;;1771:783;;;;;;:::i;:::-;;:::i;2698:115::-;;2749:11;2789:6;;2797:8;-1:-1:-1;;;;;2789:6:33;;;;2698:115;;;;;-1:-1:-1;;;;;1045:32:158;;;1027:51;;1109:2;1094:18;;1087:34;;;;1000:18;2698:115:33;833:294:158;1205:93:33;;;:::i;:::-;;;1278:25:158;;;1266:2;1251:18;1205:93:33;1132:177:158;3085:484:33;3286:26;;;-1:-1:-1;;;;;1045:32:158;;3286:26:33;;;1027:51:158;1094:18;;;1087:34;;;3186:7:33;;;;1000:18:158;;3286:26:33;;;;;;;;;;;;3276:37;;;;;;3261:52;;3323:20;3393:4;3386:12;;3408:4;3415;1264:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1254:44;;;;;;3369:67;;;;;;;;;;-1:-1:-1;;;;;;1537:26:158;;;;1525:39;;1601:2;1597:15;;;;-1:-1:-1;;1593:53:158;1589:1;1580:11;;1573:74;1672:2;1663:12;;1656:28;1709:2;1700:12;;1693:28;1746:2;1737:12;;1314:441;3369:67:33;;;;;;;-1:-1:-1;;3369:67:33;;;;;;3346:100;;3369:67;3346:100;;;;;3085:484;-1:-1:-1;;;;;3085:484:33:o;1771:783::-;1948:8;:18;;;1863:14;1976;;-1:-1:-1;;;;;;1976:14:33;-1:-1:-1;;;;;1976:14:33;;;;;;;2089:26;;;;;;1027:51:158;;;;1094:18;;1087:34;;;1863:14:33;;1000:18:158;;2089:26:33;;;;;;;;;;;;2079:37;;;;;;2064:52;;2173:23;2225:4;2199:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;2173:60;;2349:28;2362:5;2369:7;2349:12;:28::i;:::-;-1:-1:-1;;;;;2328:49:33;2336:8;-1:-1:-1;;;;;2328:49:33;;2320:58;;;;;;2425:6;:32;;-1:-1:-1;;;;;;2425:32:33;2454:1;2425:32;;;;;;2467:12;;2538:8;-1:-1:-1;;1771:783:33;;;;:::o;1205:93::-;1264:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1254:44;;;;;;1205:93;:::o;-1:-1:-1:-;;;;;;;;:::o;14:374:158:-;102:6;110;163:2;151:9;142:7;138:23;134:32;131:52;;;179:1;176;169:12;131:52;205:23;;-1:-1:-1;;;;;257:31:158;;247:42;;237:70;;303:1;300;293:12;237:70;326:5;378:2;363:18;;;;350:32;;-1:-1:-1;;;14:374:158:o", "linkReferences": {} }, "methodIdentifiers": { @@ -101,7 +101,7 @@ "getDeployDetails()": "600eb4ba", "getForwarder(address,uint256)": "0710fd58" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ERC20LINK_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMultiToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract ERC20Forwarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeployDetails\",\"outputs\":[{\"internalType\":\"contract IMultiToken\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMultiToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"details\":\"This factory deploys them using create2 so that the multi token can do cheap verification of the interfaces before they access sensitive functions.\",\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"params\":{\"token\":\"The multitoken which the forwarder should link to\",\"tokenId\":\"The id of the sub token from the multitoken which we are creating an interface for.\"},\"returns\":{\"_0\":\"returns the address of the deployed forwarder\"}},\"getDeployDetails()\":{\"returns\":{\"_0\":\"Returns the stored multitoken address and the sub token id\"}},\"getForwarder(address,uint256)\":{\"params\":{\"token\":\"The multitoken which the forwarder should link to\",\"tokenId\":\"The id of the sub token from the multitoken\"},\"returns\":{\"_0\":\"The expected address of the forwarder\"}}},\"title\":\"ForwarderFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Uses create2 to deploy a forwarder at a predictable address as part of our ERC20 multitoken implementation.\"},\"getDeployDetails()\":{\"notice\":\"Returns the transient storage of this contract\"},\"getForwarder(address,uint256)\":{\"notice\":\"Helper to calculate expected forwarder contract addresses\"}},\"notice\":\"Our MultiToken contract consists of fungible sub-tokens that are similar to ERC20 tokens. In order to support ERC20 compatibility we can deploy interfaces which are ERC20s.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/token/ForwarderFactory.sol\":\"ForwarderFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IForwarderFactory.sol\":{\"keccak256\":\"0x939624fbf6490ff4e9309638d1ed36ba68cfd6a147763810dcbb2bb1efd326af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://aba4213925b95149b6524719699e6f1642a99e7e13070cc9348b11f704a23ba3\",\"dweb:/ipfs/QmPjwGGY3UDYzw56ccvxz7cq6oSTphKqEDPvVdrX7qAPaF\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e\",\"dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386\",\"dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166\",\"dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/token/ERC20Forwarder.sol\":{\"keccak256\":\"0x82443836e43eb3192b6277876728a71856609e556938297439dcac65f0c4c51f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4d998ce99436f0df0d0f9c4adfcc2fb0303f49d7cd29eb28d716ffff5053a66f\",\"dweb:/ipfs/QmbHaeJszwo5J1xUHQwDEXLe4oCnsBwqsbmVuPKWWBjGEN\"]},\"contracts/src/token/ForwarderFactory.sol\":{\"keccak256\":\"0x264d2a5f6baca07e39f58e92aebea29aef138e8a4fef74f2526ef03d7b0ee253\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://60a4490ed1690cc61d961ad50146ea9e389158c56f4cb3c66121a631ace1726e\",\"dweb:/ipfs/QmbKfYAbmpdzCaLmWKoDPLitqNKX4EoypmEAaj81PCqm7N\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ERC20LINK_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMultiToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract ERC20Forwarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeployDetails\",\"outputs\":[{\"internalType\":\"contract IMultiToken\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMultiToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"details\":\"This factory deploys them using create2 so that the multi token can do cheap verification of the interfaces before they access sensitive functions.\",\"kind\":\"dev\",\"methods\":{\"create(address,uint256)\":{\"params\":{\"token\":\"The multitoken which the forwarder should link to\",\"tokenId\":\"The id of the sub token from the multitoken which we are creating an interface for.\"},\"returns\":{\"_0\":\"returns the address of the deployed forwarder\"}},\"getDeployDetails()\":{\"returns\":{\"_0\":\"Returns the stored multitoken address and the sub token id\"}},\"getForwarder(address,uint256)\":{\"params\":{\"token\":\"The multitoken which the forwarder should link to\",\"tokenId\":\"The id of the sub token from the multitoken\"},\"returns\":{\"_0\":\"The expected address of the forwarder\"}}},\"title\":\"ForwarderFactory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"create(address,uint256)\":{\"notice\":\"Uses create2 to deploy a forwarder at a predictable address as part of our ERC20 multitoken implementation.\"},\"getDeployDetails()\":{\"notice\":\"Returns the transient storage of this contract\"},\"getForwarder(address,uint256)\":{\"notice\":\"Helper to calculate expected forwarder contract addresses\"}},\"notice\":\"Our MultiToken contract consists of fungible sub-tokens that are similar to ERC20 tokens. In order to support ERC20 compatibility we can deploy interfaces which are ERC20s.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/token/ForwarderFactory.sol\":\"ForwarderFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IForwarderFactory.sol\":{\"keccak256\":\"0x939624fbf6490ff4e9309638d1ed36ba68cfd6a147763810dcbb2bb1efd326af\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://aba4213925b95149b6524719699e6f1642a99e7e13070cc9348b11f704a23ba3\",\"dweb:/ipfs/QmPjwGGY3UDYzw56ccvxz7cq6oSTphKqEDPvVdrX7qAPaF\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff\",\"dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5\",\"dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/token/ERC20Forwarder.sol\":{\"keccak256\":\"0x82443836e43eb3192b6277876728a71856609e556938297439dcac65f0c4c51f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4d998ce99436f0df0d0f9c4adfcc2fb0303f49d7cd29eb28d716ffff5053a66f\",\"dweb:/ipfs/QmbHaeJszwo5J1xUHQwDEXLe4oCnsBwqsbmVuPKWWBjGEN\"]},\"contracts/src/token/ForwarderFactory.sol\":{\"keccak256\":\"0x264d2a5f6baca07e39f58e92aebea29aef138e8a4fef74f2526ef03d7b0ee253\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://60a4490ed1690cc61d961ad50146ea9e389158c56f4cb3c66121a631ace1726e\",\"dweb:/ipfs/QmbKfYAbmpdzCaLmWKoDPLitqNKX4EoypmEAaj81PCqm7N\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -241,16 +241,16 @@ }, "settings": { "remappings": [ - ":@aave/=lib/aave-v3-core/contracts/", - ":aave-v3-core/=lib/aave-v3-core/", - ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/", - ":yield-daddy/=lib/yield-daddy/" + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/" ], "optimizer": { "enabled": true, @@ -282,26 +282,26 @@ "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdrive.sol": { - "keccak256": "0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e", + "keccak256": "0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284", "urls": [ - "bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e", - "dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ" + "bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff", + "dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp" ], "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveRead.sol": { - "keccak256": "0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110", + "keccak256": "0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3", "urls": [ - "bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386", - "dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F" + "bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993", + "dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt" ], "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveWrite.sol": { - "keccak256": "0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615", + "keccak256": "0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16", "urls": [ - "bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166", - "dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG" + "bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5", + "dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx" ], "license": "Apache-2.0" }, @@ -390,28 +390,28 @@ }, "ast": { "absolutePath": "contracts/src/token/ForwarderFactory.sol", - "id": 10288, + "id": 12034, "exportedSymbols": { "ERC20Forwarder": [ - 10117 + 11863 ], "ForwarderFactory": [ - 10287 + 12033 ], "IForwarderFactory": [ - 6073 + 6591 ], "IMultiToken": [ - 6782 + 7257 ] }, "nodeType": "SourceUnit", - "src": "39:3533:37", + "src": "39:3533:33", "nodes": [ { - "id": 10119, + "id": 11865, "nodeType": "PragmaDirective", - "src": "39:23:37", + "src": "39:23:33", "nodes": [], "literals": [ "solidity", @@ -420,24 +420,24 @@ ] }, { - "id": 10121, + "id": 11867, "nodeType": "ImportDirective", - "src": "64:72:37", + "src": "64:72:33", "nodes": [], "absolutePath": "contracts/src/interfaces/IForwarderFactory.sol", "file": "../interfaces/IForwarderFactory.sol", "nameLocation": "-1:-1:-1", - "scope": 10288, - "sourceUnit": 6074, + "scope": 12034, + "sourceUnit": 6592, "symbolAliases": [ { "foreign": { - "id": 10120, + "id": 11866, "name": "IForwarderFactory", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6073, - "src": "73:17:37", + "referencedDeclaration": 6591, + "src": "73:17:33", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -446,24 +446,24 @@ "unitAlias": "" }, { - "id": 10123, + "id": 11869, "nodeType": "ImportDirective", - "src": "137:60:37", + "src": "137:60:33", "nodes": [], "absolutePath": "contracts/src/interfaces/IMultiToken.sol", "file": "../interfaces/IMultiToken.sol", "nameLocation": "-1:-1:-1", - "scope": 10288, - "sourceUnit": 6783, + "scope": 12034, + "sourceUnit": 7258, "symbolAliases": [ { "foreign": { - "id": 10122, + "id": 11868, "name": "IMultiToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6782, - "src": "146:11:37", + "referencedDeclaration": 7257, + "src": "146:11:33", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -472,24 +472,24 @@ "unitAlias": "" }, { - "id": 10125, + "id": 11871, "nodeType": "ImportDirective", - "src": "198:54:37", + "src": "198:54:33", "nodes": [], "absolutePath": "contracts/src/token/ERC20Forwarder.sol", "file": "./ERC20Forwarder.sol", "nameLocation": "-1:-1:-1", - "scope": 10288, - "sourceUnit": 10118, + "scope": 12034, + "sourceUnit": 11864, "symbolAliases": [ { "foreign": { - "id": 10124, + "id": 11870, "name": "ERC20Forwarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10117, - "src": "207:14:37", + "referencedDeclaration": 11863, + "src": "207:14:33", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -498,43 +498,43 @@ "unitAlias": "" }, { - "id": 10287, + "id": 12033, "nodeType": "ContractDefinition", - "src": "907:2664:37", + "src": "907:2664:33", "nodes": [ { - "id": 10137, + "id": 11883, "nodeType": "VariableDeclaration", - "src": "1091:52:37", + "src": "1091:52:33", "nodes": [], "constant": false, "mutability": "mutable", "name": "_token", - "nameLocation": "1111:6:37", - "scope": 10287, + "nameLocation": "1111:6:33", + "scope": 12033, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, "typeName": { - "id": 10130, + "id": 11876, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10129, + "id": 11875, "name": "IMultiToken", "nameLocations": [ - "1091:11:37" + "1091:11:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6782, - "src": "1091:11:37" + "referencedDeclaration": 7257, + "src": "1091:11:33" }, - "referencedDeclaration": 6782, - "src": "1091:11:37", + "referencedDeclaration": 7257, + "src": "1091:11:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, @@ -544,14 +544,14 @@ "arguments": [ { "hexValue": "31", - "id": 10134, + "id": 11880, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1140:1:37", + "src": "1140:1:33", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -566,26 +566,26 @@ "typeString": "int_const 1" } ], - "id": 10133, + "id": 11879, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1132:7:37", + "src": "1132:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 10132, + "id": 11878, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:37", + "src": "1132:7:33", "typeDescriptions": {} } }, - "id": 10135, + "id": 11881, "isConstant": false, "isLValue": false, "isPure": true, @@ -594,7 +594,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1132:10:37", + "src": "1132:10:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -609,18 +609,18 @@ "typeString": "address" } ], - "id": 10131, + "id": 11877, "name": "IMultiToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6782, - "src": "1120:11:37", + "referencedDeclaration": 7257, + "src": "1120:11:33", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IMultiToken_$6782_$", + "typeIdentifier": "t_type$_t_contract$_IMultiToken_$7257_$", "typeString": "type(contract IMultiToken)" } }, - "id": 10136, + "id": 11882, "isConstant": false, "isLValue": false, "isPure": true, @@ -629,25 +629,25 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1120:23:37", + "src": "1120:23:33", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, "visibility": "private" }, { - "id": 10140, + "id": 11886, "nodeType": "VariableDeclaration", - "src": "1149:28:37", + "src": "1149:28:33", "nodes": [], "constant": false, "mutability": "mutable", "name": "_tokenId", - "nameLocation": "1165:8:37", - "scope": 10287, + "nameLocation": "1165:8:33", + "scope": 12033, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -655,10 +655,10 @@ "typeString": "uint256" }, "typeName": { - "id": 10138, + "id": 11884, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1149:7:37", + "src": "1149:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -666,14 +666,14 @@ }, "value": { "hexValue": "31", - "id": 10139, + "id": 11885, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1176:1:37", + "src": "1176:1:33", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -683,16 +683,16 @@ "visibility": "private" }, { - "id": 10148, + "id": 11894, "nodeType": "VariableDeclaration", - "src": "1205:93:37", + "src": "1205:93:33", "nodes": [], "constant": true, "functionSelector": "d13053bb", "mutability": "constant", "name": "ERC20LINK_HASH", - "nameLocation": "1229:14:37", - "scope": 10287, + "nameLocation": "1229:14:33", + "scope": 12033, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -700,10 +700,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 10141, + "id": 11887, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1205:7:37", + "src": "1205:7:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -715,14 +715,14 @@ "expression": { "arguments": [ { - "id": 10144, + "id": 11890, "name": "ERC20Forwarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10117, - "src": "1269:14:37", + "referencedDeclaration": 11863, + "src": "1269:14:33", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Forwarder_$10117_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Forwarder_$11863_$", "typeString": "type(contract ERC20Forwarder)" } } @@ -730,22 +730,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_type$_t_contract$_ERC20Forwarder_$10117_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Forwarder_$11863_$", "typeString": "type(contract ERC20Forwarder)" } ], - "id": 10143, + "id": 11889, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, - "src": "1264:4:37", + "src": "1264:4:33", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 10145, + "id": 11891, "isConstant": false, "isLValue": false, "isPure": true, @@ -754,22 +754,22 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1264:20:37", + "src": "1264:20:33", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_magic_meta_type_t_contract$_ERC20Forwarder_$11863", "typeString": "type(contract ERC20Forwarder)" } }, - "id": 10146, + "id": 11892, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "1285:12:37", + "memberLocation": "1285:12:33", "memberName": "creationCode", "nodeType": "MemberAccess", - "src": "1264:33:37", + "src": "1264:33:33", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -783,18 +783,18 @@ "typeString": "bytes memory" } ], - "id": 10142, + "id": 11888, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "1254:9:37", + "src": "1254:9:33", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 10147, + "id": 11893, "isConstant": false, "isLValue": false, "isPure": true, @@ -803,7 +803,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1254:44:37", + "src": "1254:44:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -813,14 +813,14 @@ "visibility": "public" }, { - "id": 10152, + "id": 11898, "nodeType": "FunctionDefinition", - "src": "1305:16:37", + "src": "1305:16:33", "nodes": [], "body": { - "id": 10151, + "id": 11897, "nodeType": "Block", - "src": "1319:2:37", + "src": "1319:2:33", "nodes": [], "statements": [] }, @@ -830,47 +830,47 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 10149, + "id": 11895, "nodeType": "ParameterList", "parameters": [], - "src": "1316:2:37" + "src": "1316:2:33" }, "returnParameters": { - "id": 10150, + "id": 11896, "nodeType": "ParameterList", "parameters": [], - "src": "1319:0:37" + "src": "1319:0:33" }, - "scope": 10287, + "scope": 12033, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 10221, + "id": 11967, "nodeType": "FunctionDefinition", - "src": "1771:783:37", + "src": "1771:783:33", "nodes": [], "body": { - "id": 10220, + "id": 11966, "nodeType": "Block", - "src": "1879:675:37", + "src": "1879:675:33", "nodes": [], "statements": [ { "expression": { - "id": 10166, + "id": 11912, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 10164, + "id": 11910, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10140, - "src": "1948:8:37", + "referencedDeclaration": 11886, + "src": "1948:8:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -879,84 +879,84 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 10165, + "id": 11911, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10158, - "src": "1959:7:37", + "referencedDeclaration": 11904, + "src": "1959:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1948:18:37", + "src": "1948:18:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 10167, + "id": 11913, "nodeType": "ExpressionStatement", - "src": "1948:18:37" + "src": "1948:18:33" }, { "expression": { - "id": 10170, + "id": 11916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 10168, + "id": 11914, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10137, - "src": "1976:6:37", + "referencedDeclaration": 11883, + "src": "1976:6:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 10169, + "id": 11915, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10156, - "src": "1985:5:37", + "referencedDeclaration": 11902, + "src": "1985:5:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, - "src": "1976:14:37", + "src": "1976:14:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, - "id": 10171, + "id": 11917, "nodeType": "ExpressionStatement", - "src": "1976:14:37" + "src": "1976:14:33" }, { "assignments": [ - 10173 + 11919 ], "declarations": [ { "constant": false, - "id": 10173, + "id": 11919, "mutability": "mutable", "name": "salt", - "nameLocation": "2072:4:37", + "nameLocation": "2072:4:33", "nodeType": "VariableDeclaration", - "scope": 10220, - "src": "2064:12:37", + "scope": 11966, + "src": "2064:12:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -964,10 +964,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 10172, + "id": 11918, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2064:7:37", + "src": "2064:7:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -976,30 +976,30 @@ "visibility": "internal" } ], - "id": 10181, + "id": 11927, "initialValue": { "arguments": [ { "arguments": [ { - "id": 10177, + "id": 11923, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10156, - "src": "2100:5:37", + "referencedDeclaration": 11902, + "src": "2100:5:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, { - "id": 10178, + "id": 11924, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10158, - "src": "2107:7:37", + "referencedDeclaration": 11904, + "src": "2107:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1009,7 +1009,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, { @@ -1018,32 +1018,32 @@ } ], "expression": { - "id": 10175, + "id": 11921, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "2089:3:37", + "src": "2089:3:33", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 10176, + "id": 11922, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "2093:6:37", + "memberLocation": "2093:6:33", "memberName": "encode", "nodeType": "MemberAccess", - "src": "2089:10:37", + "src": "2089:10:33", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 10179, + "id": 11925, "isConstant": false, "isLValue": false, "isPure": false, @@ -1052,7 +1052,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2089:26:37", + "src": "2089:26:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1067,18 +1067,18 @@ "typeString": "bytes memory" } ], - "id": 10174, + "id": 11920, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "2079:9:37", + "src": "2079:9:33", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 10180, + "id": 11926, "isConstant": false, "isLValue": false, "isPure": false, @@ -1087,7 +1087,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2079:37:37", + "src": "2079:37:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -1095,91 +1095,91 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2064:52:37" + "src": "2064:52:33" }, { "assignments": [ - 10184 + 11930 ], "declarations": [ { "constant": false, - "id": 10184, + "id": 11930, "mutability": "mutable", "name": "deployed", - "nameLocation": "2188:8:37", + "nameLocation": "2188:8:33", "nodeType": "VariableDeclaration", - "scope": 10220, - "src": "2173:23:37", + "scope": 11966, + "src": "2173:23:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" }, "typeName": { - "id": 10183, + "id": 11929, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10182, + "id": 11928, "name": "ERC20Forwarder", "nameLocations": [ - "2173:14:37" + "2173:14:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 10117, - "src": "2173:14:37" + "referencedDeclaration": 11863, + "src": "2173:14:33" }, - "referencedDeclaration": 10117, - "src": "2173:14:37", + "referencedDeclaration": 11863, + "src": "2173:14:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } }, "visibility": "internal" } ], - "id": 10191, + "id": 11937, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": [], - "id": 10187, + "id": 11933, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "2199:18:37", + "src": "2199:18:33", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_ERC20Forwarder_$10117_$", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_ERC20Forwarder_$11863_$", "typeString": "function () returns (contract ERC20Forwarder)" }, "typeName": { - "id": 10186, + "id": 11932, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10185, + "id": 11931, "name": "ERC20Forwarder", "nameLocations": [ - "2203:14:37" + "2203:14:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 10117, - "src": "2203:14:37" + "referencedDeclaration": 11863, + "src": "2203:14:33" }, - "referencedDeclaration": 10117, - "src": "2203:14:37", + "referencedDeclaration": 11863, + "src": "2203:14:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } } }, - "id": 10189, + "id": 11935, "isConstant": false, "isLValue": false, "isPure": false, @@ -1190,25 +1190,25 @@ "nodeType": "FunctionCallOptions", "options": [ { - "id": 10188, + "id": 11934, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10173, - "src": "2225:4:37", + "referencedDeclaration": 11919, + "src": "2225:4:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], - "src": "2199:32:37", + "src": "2199:32:33", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_ERC20Forwarder_$10117_$salt", + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_ERC20Forwarder_$11863_$salt", "typeString": "function () returns (contract ERC20Forwarder)" } }, - "id": 10190, + "id": 11936, "isConstant": false, "isLValue": false, "isPure": false, @@ -1217,15 +1217,15 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2199:34:37", + "src": "2199:34:33", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } }, "nodeType": "VariableDeclarationStatement", - "src": "2173:60:37" + "src": "2173:60:33" }, { "expression": { @@ -1235,7 +1235,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 10201, + "id": 11947, "isConstant": false, "isLValue": false, "isPure": false, @@ -1243,14 +1243,14 @@ "leftExpression": { "arguments": [ { - "id": 10195, + "id": 11941, "name": "deployed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10184, - "src": "2336:8:37", + "referencedDeclaration": 11930, + "src": "2336:8:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } } @@ -1258,30 +1258,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } ], - "id": 10194, + "id": 11940, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2328:7:37", + "src": "2328:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 10193, + "id": 11939, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2328:7:37", + "src": "2328:7:33", "typeDescriptions": {} } }, - "id": 10196, + "id": 11942, "isConstant": false, "isLValue": false, "isPure": false, @@ -1290,7 +1290,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2328:17:37", + "src": "2328:17:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -1302,24 +1302,24 @@ "rightExpression": { "arguments": [ { - "id": 10198, + "id": 11944, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10156, - "src": "2362:5:37", + "referencedDeclaration": 11902, + "src": "2362:5:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, { - "id": 10199, + "id": 11945, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10158, - "src": "2369:7:37", + "referencedDeclaration": 11904, + "src": "2369:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1329,7 +1329,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, { @@ -1337,18 +1337,18 @@ "typeString": "uint256" } ], - "id": 10197, + "id": 11943, "name": "getForwarder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10286, - "src": "2349:12:37", + "referencedDeclaration": 12032, + "src": "2349:12:33", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_contract$_IMultiToken_$6782_$_t_uint256_$returns$_t_address_$", + "typeIdentifier": "t_function_internal_view$_t_contract$_IMultiToken_$7257_$_t_uint256_$returns$_t_address_$", "typeString": "function (contract IMultiToken,uint256) view returns (address)" } }, - "id": 10200, + "id": 11946, "isConstant": false, "isLValue": false, "isPure": false, @@ -1357,14 +1357,14 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2349:28:37", + "src": "2349:28:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2328:49:37", + "src": "2328:49:33", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1378,7 +1378,7 @@ "typeString": "bool" } ], - "id": 10192, + "id": 11938, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ @@ -1386,13 +1386,13 @@ -18 ], "referencedDeclaration": -18, - "src": "2320:7:37", + "src": "2320:7:33", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 10202, + "id": 11948, "isConstant": false, "isLValue": false, "isPure": false, @@ -1401,33 +1401,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2320:58:37", + "src": "2320:58:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 10203, + "id": 11949, "nodeType": "ExpressionStatement", - "src": "2320:58:37" + "src": "2320:58:33" }, { "expression": { - "id": 10211, + "id": 11957, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 10204, + "id": 11950, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10137, - "src": "2425:6:37", + "referencedDeclaration": 11883, + "src": "2425:6:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, @@ -1439,14 +1439,14 @@ "arguments": [ { "hexValue": "31", - "id": 10208, + "id": 11954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2454:1:37", + "src": "2454:1:33", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" @@ -1461,26 +1461,26 @@ "typeString": "int_const 1" } ], - "id": 10207, + "id": 11953, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2446:7:37", + "src": "2446:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 10206, + "id": 11952, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2446:7:37", + "src": "2446:7:33", "typeDescriptions": {} } }, - "id": 10209, + "id": 11955, "isConstant": false, "isLValue": false, "isPure": true, @@ -1489,7 +1489,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2446:10:37", + "src": "2446:10:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -1504,18 +1504,18 @@ "typeString": "address" } ], - "id": 10205, + "id": 11951, "name": "IMultiToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6782, - "src": "2434:11:37", + "referencedDeclaration": 7257, + "src": "2434:11:33", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IMultiToken_$6782_$", + "typeIdentifier": "t_type$_t_contract$_IMultiToken_$7257_$", "typeString": "type(contract IMultiToken)" } }, - "id": 10210, + "id": 11956, "isConstant": false, "isLValue": false, "isPure": true, @@ -1524,37 +1524,37 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2434:23:37", + "src": "2434:23:33", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, - "src": "2425:32:37", + "src": "2425:32:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, - "id": 10212, + "id": 11958, "nodeType": "ExpressionStatement", - "src": "2425:32:37" + "src": "2425:32:33" }, { "expression": { - "id": 10215, + "id": 11961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 10213, + "id": 11959, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10140, - "src": "2467:8:37", + "referencedDeclaration": 11886, + "src": "2467:8:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1564,70 +1564,70 @@ "operator": "=", "rightHandSide": { "hexValue": "31", - "id": 10214, + "id": 11960, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2478:1:37", + "src": "2478:1:33", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "2467:12:37", + "src": "2467:12:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 10216, + "id": 11962, "nodeType": "ExpressionStatement", - "src": "2467:12:37" + "src": "2467:12:33" }, { "expression": { "components": [ { - "id": 10217, + "id": 11963, "name": "deployed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10184, - "src": "2538:8:37", + "referencedDeclaration": 11930, + "src": "2538:8:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } } ], - "id": 10218, + "id": 11964, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2537:10:37", + "src": "2537:10:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } }, - "functionReturnParameters": 10163, - "id": 10219, + "functionReturnParameters": 11909, + "id": 11965, "nodeType": "Return", - "src": "2530:17:37" + "src": "2530:17:33" } ] }, "documentation": { - "id": 10153, + "id": 11899, "nodeType": "StructuredDocumentation", - "src": "1367:399:37", + "src": "1367:399:33", "text": "@notice Uses create2 to deploy a forwarder at a predictable address as part of\n our ERC20 multitoken implementation.\n @param token The multitoken which the forwarder should link to\n @param tokenId The id of the sub token from the multitoken which we are creating\n an interface for.\n @return returns the address of the deployed forwarder" }, "functionSelector": "0ecaea73", @@ -1635,43 +1635,43 @@ "kind": "function", "modifiers": [], "name": "create", - "nameLocation": "1780:6:37", + "nameLocation": "1780:6:33", "parameters": { - "id": 10159, + "id": 11905, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 10156, + "id": 11902, "mutability": "mutable", "name": "token", - "nameLocation": "1808:5:37", + "nameLocation": "1808:5:33", "nodeType": "VariableDeclaration", - "scope": 10221, - "src": "1796:17:37", + "scope": 11967, + "src": "1796:17:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, "typeName": { - "id": 10155, + "id": 11901, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10154, + "id": 11900, "name": "IMultiToken", "nameLocations": [ - "1796:11:37" + "1796:11:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6782, - "src": "1796:11:37" + "referencedDeclaration": 7257, + "src": "1796:11:33" }, - "referencedDeclaration": 6782, - "src": "1796:11:37", + "referencedDeclaration": 7257, + "src": "1796:11:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, @@ -1679,13 +1679,13 @@ }, { "constant": false, - "id": 10158, + "id": 11904, "mutability": "mutable", "name": "tokenId", - "nameLocation": "1831:7:37", + "nameLocation": "1831:7:33", "nodeType": "VariableDeclaration", - "scope": 10221, - "src": "1823:15:37", + "scope": 11967, + "src": "1823:15:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1693,10 +1693,10 @@ "typeString": "uint256" }, "typeName": { - "id": 10157, + "id": 11903, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1823:7:37", + "src": "1823:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1705,123 +1705,123 @@ "visibility": "internal" } ], - "src": "1786:58:37" + "src": "1786:58:33" }, "returnParameters": { - "id": 10163, + "id": 11909, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 10162, + "id": 11908, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 10221, - "src": "1863:14:37", + "scope": 11967, + "src": "1863:14:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" }, "typeName": { - "id": 10161, + "id": 11907, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10160, + "id": 11906, "name": "ERC20Forwarder", "nameLocations": [ - "1863:14:37" + "1863:14:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 10117, - "src": "1863:14:37" + "referencedDeclaration": 11863, + "src": "1863:14:33" }, - "referencedDeclaration": 10117, - "src": "1863:14:37", + "referencedDeclaration": 11863, + "src": "1863:14:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Forwarder_$10117", + "typeIdentifier": "t_contract$_ERC20Forwarder_$11863", "typeString": "contract ERC20Forwarder" } }, "visibility": "internal" } ], - "src": "1862:16:37" + "src": "1862:16:33" }, - "scope": 10287, + "scope": 12033, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 10235, + "id": 11981, "nodeType": "FunctionDefinition", - "src": "2698:115:37", + "src": "2698:115:33", "nodes": [], "body": { - "id": 10234, + "id": 11980, "nodeType": "Block", - "src": "2771:42:37", + "src": "2771:42:33", "nodes": [], "statements": [ { "expression": { "components": [ { - "id": 10230, + "id": 11976, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10137, - "src": "2789:6:37", + "referencedDeclaration": 11883, + "src": "2789:6:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, { - "id": 10231, + "id": 11977, "name": "_tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10140, - "src": "2797:8:37", + "referencedDeclaration": 11886, + "src": "2797:8:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 10232, + "id": 11978, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2788:18:37", + "src": "2788:18:33", "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_contract$_IMultiToken_$6782_$_t_uint256_$", + "typeIdentifier": "t_tuple$_t_contract$_IMultiToken_$7257_$_t_uint256_$", "typeString": "tuple(contract IMultiToken,uint256)" } }, - "functionReturnParameters": 10229, - "id": 10233, + "functionReturnParameters": 11975, + "id": 11979, "nodeType": "Return", - "src": "2781:25:37" + "src": "2781:25:33" } ] }, "baseFunctions": [ - 6072 + 6590 ], "documentation": { - "id": 10222, + "id": 11968, "nodeType": "StructuredDocumentation", - "src": "2560:133:37", + "src": "2560:133:33", "text": "@notice Returns the transient storage of this contract\n @return Returns the stored multitoken address and the sub token id" }, "functionSelector": "600eb4ba", @@ -1829,49 +1829,49 @@ "kind": "function", "modifiers": [], "name": "getDeployDetails", - "nameLocation": "2707:16:37", + "nameLocation": "2707:16:33", "parameters": { - "id": 10223, + "id": 11969, "nodeType": "ParameterList", "parameters": [], - "src": "2723:2:37" + "src": "2723:2:33" }, "returnParameters": { - "id": 10229, + "id": 11975, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 10226, + "id": 11972, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 10235, - "src": "2749:11:37", + "scope": 11981, + "src": "2749:11:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, "typeName": { - "id": 10225, + "id": 11971, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10224, + "id": 11970, "name": "IMultiToken", "nameLocations": [ - "2749:11:37" + "2749:11:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6782, - "src": "2749:11:37" + "referencedDeclaration": 7257, + "src": "2749:11:33" }, - "referencedDeclaration": 6782, - "src": "2749:11:37", + "referencedDeclaration": 7257, + "src": "2749:11:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, @@ -1879,13 +1879,13 @@ }, { "constant": false, - "id": 10228, + "id": 11974, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 10235, - "src": "2762:7:37", + "scope": 11981, + "src": "2762:7:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1893,10 +1893,10 @@ "typeString": "uint256" }, "typeName": { - "id": 10227, + "id": 11973, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2762:7:37", + "src": "2762:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1905,38 +1905,38 @@ "visibility": "internal" } ], - "src": "2748:22:37" + "src": "2748:22:33" }, - "scope": 10287, + "scope": 12033, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 10286, + "id": 12032, "nodeType": "FunctionDefinition", - "src": "3085:484:37", + "src": "3085:484:33", "nodes": [], "body": { - "id": 10285, + "id": 12031, "nodeType": "Block", - "src": "3195:374:37", + "src": "3195:374:33", "nodes": [], "statements": [ { "assignments": [ - 10247 + 11993 ], "declarations": [ { "constant": false, - "id": 10247, + "id": 11993, "mutability": "mutable", "name": "salt", - "nameLocation": "3269:4:37", + "nameLocation": "3269:4:33", "nodeType": "VariableDeclaration", - "scope": 10285, - "src": "3261:12:37", + "scope": 12031, + "src": "3261:12:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1944,10 +1944,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 10246, + "id": 11992, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3261:7:37", + "src": "3261:7:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1956,30 +1956,30 @@ "visibility": "internal" } ], - "id": 10255, + "id": 12001, "initialValue": { "arguments": [ { "arguments": [ { - "id": 10251, + "id": 11997, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10239, - "src": "3297:5:37", + "referencedDeclaration": 11985, + "src": "3297:5:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, { - "id": 10252, + "id": 11998, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10241, - "src": "3304:7:37", + "referencedDeclaration": 11987, + "src": "3304:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1989,7 +1989,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, { @@ -1998,32 +1998,32 @@ } ], "expression": { - "id": 10249, + "id": 11995, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "3286:3:37", + "src": "3286:3:33", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 10250, + "id": 11996, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "3290:6:37", + "memberLocation": "3290:6:33", "memberName": "encode", "nodeType": "MemberAccess", - "src": "3286:10:37", + "src": "3286:10:33", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 10253, + "id": 11999, "isConstant": false, "isLValue": false, "isPure": false, @@ -2032,7 +2032,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3286:26:37", + "src": "3286:26:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -2047,18 +2047,18 @@ "typeString": "bytes memory" } ], - "id": 10248, + "id": 11994, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "3276:9:37", + "src": "3276:9:33", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 10254, + "id": 12000, "isConstant": false, "isLValue": false, "isPure": false, @@ -2067,7 +2067,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3276:37:37", + "src": "3276:37:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2075,22 +2075,22 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3261:52:37" + "src": "3261:52:33" }, { "assignments": [ - 10257 + 12003 ], "declarations": [ { "constant": false, - "id": 10257, + "id": 12003, "mutability": "mutable", "name": "addressBytes", - "nameLocation": "3331:12:37", + "nameLocation": "3331:12:33", "nodeType": "VariableDeclaration", - "scope": 10285, - "src": "3323:20:37", + "scope": 12031, + "src": "3323:20:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2098,10 +2098,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 10256, + "id": 12002, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3323:7:37", + "src": "3323:7:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2110,7 +2110,7 @@ "visibility": "internal" } ], - "id": 10273, + "id": 12019, "initialValue": { "arguments": [ { @@ -2119,14 +2119,14 @@ "arguments": [ { "hexValue": "30786666", - "id": 10263, + "id": 12009, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3393:4:37", + "src": "3393:4:33", "typeDescriptions": { "typeIdentifier": "t_rational_255_by_1", "typeString": "int_const 255" @@ -2141,26 +2141,26 @@ "typeString": "int_const 255" } ], - "id": 10262, + "id": 12008, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3386:6:37", + "src": "3386:6:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": { - "id": 10261, + "id": 12007, "name": "bytes1", "nodeType": "ElementaryTypeName", - "src": "3386:6:37", + "src": "3386:6:33", "typeDescriptions": {} } }, - "id": 10264, + "id": 12010, "isConstant": false, "isLValue": false, "isPure": true, @@ -2169,7 +2169,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3386:12:37", + "src": "3386:12:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes1", @@ -2179,14 +2179,14 @@ { "arguments": [ { - "id": 10267, + "id": 12013, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "3408:4:37", + "src": "3408:4:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_ForwarderFactory_$10287", + "typeIdentifier": "t_contract$_ForwarderFactory_$12033", "typeString": "contract ForwarderFactory" } } @@ -2194,30 +2194,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ForwarderFactory_$10287", + "typeIdentifier": "t_contract$_ForwarderFactory_$12033", "typeString": "contract ForwarderFactory" } ], - "id": 10266, + "id": 12012, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3400:7:37", + "src": "3400:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 10265, + "id": 12011, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3400:7:37", + "src": "3400:7:33", "typeDescriptions": {} } }, - "id": 10268, + "id": 12014, "isConstant": false, "isLValue": false, "isPure": false, @@ -2226,7 +2226,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3400:13:37", + "src": "3400:13:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2234,24 +2234,24 @@ } }, { - "id": 10269, + "id": 12015, "name": "salt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10247, - "src": "3415:4:37", + "referencedDeclaration": 11993, + "src": "3415:4:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { - "id": 10270, + "id": 12016, "name": "ERC20LINK_HASH", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10148, - "src": "3421:14:37", + "referencedDeclaration": 11894, + "src": "3421:14:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2278,32 +2278,32 @@ } ], "expression": { - "id": 10259, + "id": 12005, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, - "src": "3369:3:37", + "src": "3369:3:33", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 10260, + "id": 12006, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberLocation": "3373:12:37", + "memberLocation": "3373:12:33", "memberName": "encodePacked", "nodeType": "MemberAccess", - "src": "3369:16:37", + "src": "3369:16:33", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 10271, + "id": 12017, "isConstant": false, "isLValue": false, "isPure": false, @@ -2312,7 +2312,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3369:67:37", + "src": "3369:67:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -2327,18 +2327,18 @@ "typeString": "bytes memory" } ], - "id": 10258, + "id": 12004, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, - "src": "3346:9:37", + "src": "3346:9:33", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 10272, + "id": 12018, "isConstant": false, "isLValue": false, "isPure": false, @@ -2347,7 +2347,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3346:100:37", + "src": "3346:100:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -2355,7 +2355,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "3323:123:37" + "src": "3323:123:33" }, { "expression": { @@ -2365,12 +2365,12 @@ { "arguments": [ { - "id": 10280, + "id": 12026, "name": "addressBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 10257, - "src": "3547:12:37", + "referencedDeclaration": 12003, + "src": "3547:12:33", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2384,26 +2384,26 @@ "typeString": "bytes32" } ], - "id": 10279, + "id": 12025, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3539:7:37", + "src": "3539:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { - "id": 10278, + "id": 12024, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3539:7:37", + "src": "3539:7:33", "typeDescriptions": {} } }, - "id": 10281, + "id": 12027, "isConstant": false, "isLValue": false, "isPure": false, @@ -2412,7 +2412,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3539:21:37", + "src": "3539:21:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2427,26 +2427,26 @@ "typeString": "uint256" } ], - "id": 10277, + "id": 12023, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3531:7:37", + "src": "3531:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { - "id": 10276, + "id": 12022, "name": "uint160", "nodeType": "ElementaryTypeName", - "src": "3531:7:37", + "src": "3531:7:33", "typeDescriptions": {} } }, - "id": 10282, + "id": 12028, "isConstant": false, "isLValue": false, "isPure": false, @@ -2455,7 +2455,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3531:30:37", + "src": "3531:30:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", @@ -2470,26 +2470,26 @@ "typeString": "uint160" } ], - "id": 10275, + "id": 12021, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3523:7:37", + "src": "3523:7:33", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 10274, + "id": 12020, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3523:7:37", + "src": "3523:7:33", "typeDescriptions": {} } }, - "id": 10283, + "id": 12029, "isConstant": false, "isLValue": false, "isPure": false, @@ -2498,24 +2498,24 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "3523:39:37", + "src": "3523:39:33", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 10245, - "id": 10284, + "functionReturnParameters": 11991, + "id": 12030, "nodeType": "Return", - "src": "3516:46:37" + "src": "3516:46:33" } ] }, "documentation": { - "id": 10236, + "id": 11982, "nodeType": "StructuredDocumentation", - "src": "2819:261:37", + "src": "2819:261:33", "text": "@notice Helper to calculate expected forwarder contract addresses\n @param token The multitoken which the forwarder should link to\n @param tokenId The id of the sub token from the multitoken\n @return The expected address of the forwarder" }, "functionSelector": "0710fd58", @@ -2523,43 +2523,43 @@ "kind": "function", "modifiers": [], "name": "getForwarder", - "nameLocation": "3094:12:37", + "nameLocation": "3094:12:33", "parameters": { - "id": 10242, + "id": 11988, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 10239, + "id": 11985, "mutability": "mutable", "name": "token", - "nameLocation": "3128:5:37", + "nameLocation": "3128:5:33", "nodeType": "VariableDeclaration", - "scope": 10286, - "src": "3116:17:37", + "scope": 12032, + "src": "3116:17:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" }, "typeName": { - "id": 10238, + "id": 11984, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 10237, + "id": 11983, "name": "IMultiToken", "nameLocations": [ - "3116:11:37" + "3116:11:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6782, - "src": "3116:11:37" + "referencedDeclaration": 7257, + "src": "3116:11:33" }, - "referencedDeclaration": 6782, - "src": "3116:11:37", + "referencedDeclaration": 7257, + "src": "3116:11:33", "typeDescriptions": { - "typeIdentifier": "t_contract$_IMultiToken_$6782", + "typeIdentifier": "t_contract$_IMultiToken_$7257", "typeString": "contract IMultiToken" } }, @@ -2567,13 +2567,13 @@ }, { "constant": false, - "id": 10241, + "id": 11987, "mutability": "mutable", "name": "tokenId", - "nameLocation": "3151:7:37", + "nameLocation": "3151:7:33", "nodeType": "VariableDeclaration", - "scope": 10286, - "src": "3143:15:37", + "scope": 12032, + "src": "3143:15:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2581,10 +2581,10 @@ "typeString": "uint256" }, "typeName": { - "id": 10240, + "id": 11986, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3143:7:37", + "src": "3143:7:33", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2593,21 +2593,21 @@ "visibility": "internal" } ], - "src": "3106:58:37" + "src": "3106:58:33" }, "returnParameters": { - "id": 10245, + "id": 11991, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 10244, + "id": 11990, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 10286, - "src": "3186:7:37", + "scope": 12032, + "src": "3186:7:33", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2615,10 +2615,10 @@ "typeString": "address" }, "typeName": { - "id": 10243, + "id": 11989, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3186:7:37", + "src": "3186:7:33", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2628,9 +2628,9 @@ "visibility": "internal" } ], - "src": "3185:9:37" + "src": "3185:9:33" }, - "scope": 10287, + "scope": 12033, "stateMutability": "view", "virtual": false, "visibility": "public" @@ -2640,43 +2640,43 @@ "baseContracts": [ { "baseName": { - "id": 10127, + "id": 11873, "name": "IForwarderFactory", "nameLocations": [ - "936:17:37" + "936:17:33" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6073, - "src": "936:17:37" + "referencedDeclaration": 6591, + "src": "936:17:33" }, - "id": 10128, + "id": 11874, "nodeType": "InheritanceSpecifier", - "src": "936:17:37" + "src": "936:17:33" } ], "canonicalName": "ForwarderFactory", "contractDependencies": [ - 10117 + 11863 ], "contractKind": "contract", "documentation": { - "id": 10126, + "id": 11872, "nodeType": "StructuredDocumentation", - "src": "254:653:37", + "src": "254:653:33", "text": "@author DELV\n @title ForwarderFactory\n @notice Our MultiToken contract consists of fungible sub-tokens that\n are similar to ERC20 tokens. In order to support ERC20 compatibility\n we can deploy interfaces which are ERC20s.\n @dev This factory deploys them using create2 so that the multi token can do\n cheap verification of the interfaces before they access sensitive\n functions.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 10287, - 6073 + 12033, + 6591 ], "name": "ForwarderFactory", - "nameLocation": "916:16:37", - "scope": 10288, + "nameLocation": "916:16:33", + "scope": 12034, "usedErrors": [] } ], "license": "Apache-2.0" }, - "id": 37 + "id": 33 } \ No newline at end of file diff --git a/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json b/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json index 3c51170271..6e6ecf152e 100644 --- a/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json +++ b/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json @@ -156,11 +156,21 @@ "name": "InvalidToken", "type": "error" }, + { + "inputs": [], + "name": "InvalidTradeSize", + "type": "error" + }, { "inputs": [], "name": "MaxFeeTooHigh", "type": "error" }, + { + "inputs": [], + "name": "MinimumTransactionAmount", + "type": "error" + }, { "inputs": [], "name": "MintPercentTooHigh", @@ -171,6 +181,11 @@ "name": "NegativeInterest", "type": "error" }, + { + "inputs": [], + "name": "NegativePresentValue", + "type": "error" + }, { "inputs": [], "name": "NoAssetsToWithdraw", @@ -257,11 +272,6 @@ "name": "UnsupportedToken", "type": "error" }, - { - "inputs": [], - "name": "ZeroAmount", - "type": "error" - }, { "inputs": [], "name": "ZeroLpTotalSupply", @@ -931,6 +941,11 @@ "name": "shortAverageMaturityTime", "type": "uint128" }, + { + "internalType": "int128", + "name": "shareAdjustment", + "type": "int128" + }, { "internalType": "uint128", "name": "longExposure", @@ -976,6 +991,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -1053,6 +1073,11 @@ "name": "shareReserves", "type": "uint256" }, + { + "internalType": "int256", + "name": "shareAdjustment", + "type": "int256" + }, { "internalType": "uint256", "name": "bondReserves", @@ -1774,7 +1799,7 @@ "transferFrom(uint256,address,address,uint256)": "1c0f12b6", "transferFromBridge(uint256,address,address,uint256,address)": "e44808bc" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseBufferExceedsShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchInputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondMatured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondNotMatured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"underlyingError\",\"type\":\"bytes4\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeOrZeroInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidApr\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBaseToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC20Bridge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFeeAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSharePrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaturityTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPositionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintPercentTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativeInterest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAssetsToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueryOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RestrictedZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReturnData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ShareReservesDeltaExceedsBondReservesDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAssetId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroLpTotalSupply\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"AddLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"apr\",\"type\":\"uint256\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"RedeemWithdrawalShares\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"}],\"name\":\"RemoveLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minApr\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxApr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointTime\",\"type\":\"uint256\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"asUnderlying\",\"type\":\"bool\"}],\"name\":\"collectGovernanceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointId\",\"type\":\"uint256\"}],\"name\":\"getCheckpoint\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"sharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longSharePrice\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"longExposure\",\"type\":\"int128\"}],\"internalType\":\"struct IHyperdrive.Checkpoint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"shareReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"bondReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longOpenSharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longExposure\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"isInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"internalType\":\"struct IHyperdrive.MarketState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"shareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bondReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesReadyToWithdraw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longExposure\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUncollectedGovernanceFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"readyToWithdraw\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"proceeds\",\"type\":\"uint128\"}],\"internalType\":\"struct IHyperdrive.WithdrawPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_slots\",\"type\":\"uint256[]\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_baseAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bondProceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxDeposit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"traderDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"perTokenApprovals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"redeemWithdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharesRedeemed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"setApprovalBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setPauser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"transferFromBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyClosed()\":[{\"notice\":\"##################### ### BondWrapper ### #####################\"}],\"ApprovalFailed()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"BatchInputLengthMismatch()\":[{\"notice\":\"###################### ### ERC20Forwarder ### ######################\"}],\"FixedPointMath_InvalidExponent()\":[{\"notice\":\"###################### ### FixedPointMath ### ######################\"}],\"InvalidTimestamp()\":[{\"notice\":\"############### ### AssetId ### ###############\"}],\"QueryOutOfRange()\":[{\"notice\":\"############ ### TWAP ### ############\"}],\"ReturnData(bytes)\":[{\"notice\":\"#################### ### DataProvider ### ####################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Initialize(address,uint256,uint256,uint256)\":{\"notice\":\"Events ///\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/interfaces/IHyperdrive.sol\":\"IHyperdrive\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x5a11f775f438a02fd3e351bf33523d3e92c35671ec66526a5d794314547df5b7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://455fc4e5389a3e3406cda1bd737b84e68eaa65cb0d71f83743487d5c4015dcfb\",\"dweb:/ipfs/QmYEzgtJEQBgUYLXfMdwTY7tHG6BR3Q7rgGxwoCcvx5FRW\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5\",\"dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseBufferExceedsShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchInputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondMatured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondNotMatured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"underlyingError\",\"type\":\"bytes4\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeOrZeroInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidApr\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBaseToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC20Bridge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFeeAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSharePrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaturityTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPositionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTradeSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumTransactionAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintPercentTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativeInterest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativePresentValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAssetsToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueryOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RestrictedZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReturnData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ShareReservesDeltaExceedsBondReservesDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAssetId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroLpTotalSupply\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"AddLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"apr\",\"type\":\"uint256\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"RedeemWithdrawalShares\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"}],\"name\":\"RemoveLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minApr\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxApr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointTime\",\"type\":\"uint256\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"asUnderlying\",\"type\":\"bool\"}],\"name\":\"collectGovernanceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointId\",\"type\":\"uint256\"}],\"name\":\"getCheckpoint\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"sharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longSharePrice\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"longExposure\",\"type\":\"int128\"}],\"internalType\":\"struct IHyperdrive.Checkpoint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"shareReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"bondReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longOpenSharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"int128\",\"name\":\"shareAdjustment\",\"type\":\"int128\"},{\"internalType\":\"uint128\",\"name\":\"longExposure\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"isInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"internalType\":\"struct IHyperdrive.MarketState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTransactionAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"shareReserves\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"shareAdjustment\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"bondReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesReadyToWithdraw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longExposure\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUncollectedGovernanceFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"readyToWithdraw\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"proceeds\",\"type\":\"uint128\"}],\"internalType\":\"struct IHyperdrive.WithdrawPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_slots\",\"type\":\"uint256[]\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_baseAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bondProceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxDeposit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"traderDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"perTokenApprovals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"redeemWithdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharesRedeemed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"setApprovalBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setPauser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"transferFromBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyClosed()\":[{\"notice\":\"##################### ### BondWrapper ### #####################\"}],\"ApprovalFailed()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"BatchInputLengthMismatch()\":[{\"notice\":\"###################### ### ERC20Forwarder ### ######################\"}],\"FixedPointMath_InvalidExponent()\":[{\"notice\":\"###################### ### FixedPointMath ### ######################\"}],\"InvalidTimestamp()\":[{\"notice\":\"############### ### AssetId ### ###############\"}],\"InvalidTradeSize()\":[{\"notice\":\"###################### ### YieldSpaceMath ### ######################\"}],\"QueryOutOfRange()\":[{\"notice\":\"############ ### TWAP ### ############\"}],\"ReturnData(bytes)\":[{\"notice\":\"#################### ### DataProvider ### ####################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Initialize(address,uint256,uint256,uint256)\":{\"notice\":\"Events ///\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/interfaces/IHyperdrive.sol\":\"IHyperdrive\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff\",\"dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5\",\"dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1938,11 +1963,21 @@ "type": "error", "name": "InvalidToken" }, + { + "inputs": [], + "type": "error", + "name": "InvalidTradeSize" + }, { "inputs": [], "type": "error", "name": "MaxFeeTooHigh" }, + { + "inputs": [], + "type": "error", + "name": "MinimumTransactionAmount" + }, { "inputs": [], "type": "error", @@ -1953,6 +1988,11 @@ "type": "error", "name": "NegativeInterest" }, + { + "inputs": [], + "type": "error", + "name": "NegativePresentValue" + }, { "inputs": [], "type": "error", @@ -2039,11 +2079,6 @@ "type": "error", "name": "UnsupportedToken" }, - { - "inputs": [], - "type": "error", - "name": "ZeroAmount" - }, { "inputs": [], "type": "error", @@ -2716,6 +2751,11 @@ "name": "shortAverageMaturityTime", "type": "uint128" }, + { + "internalType": "int128", + "name": "shareAdjustment", + "type": "int128" + }, { "internalType": "uint128", "name": "longExposure", @@ -2761,6 +2801,11 @@ "name": "minimumShareReserves", "type": "uint256" }, + { + "internalType": "uint256", + "name": "minimumTransactionAmount", + "type": "uint256" + }, { "internalType": "uint256", "name": "positionDuration", @@ -2838,6 +2883,11 @@ "name": "shareReserves", "type": "uint256" }, + { + "internalType": "int256", + "name": "shareAdjustment", + "type": "int256" + }, { "internalType": "uint256", "name": "bondReserves", @@ -3509,10 +3559,9 @@ "settings": { "remappings": [ ":@aave/=lib/aave-v3-core/contracts/", - ":@openzeppelin/=node_modules/@openzeppelin/", ":aave-v3-core/=lib/aave-v3-core/", ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/solmate/lib/ds-test/src/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", ":forge-std/=lib/forge-std/src/", ":openzeppelin-contracts/=lib/openzeppelin-contracts/", @@ -3542,10 +3591,10 @@ "license": "MIT" }, "contracts/src/interfaces/IHyperdrive.sol": { - "keccak256": "0x5a11f775f438a02fd3e351bf33523d3e92c35671ec66526a5d794314547df5b7", + "keccak256": "0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284", "urls": [ - "bzz-raw://455fc4e5389a3e3406cda1bd737b84e68eaa65cb0d71f83743487d5c4015dcfb", - "dweb:/ipfs/QmYEzgtJEQBgUYLXfMdwTY7tHG6BR3Q7rgGxwoCcvx5FRW" + "bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff", + "dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp" ], "license": "Apache-2.0" }, @@ -3634,29 +3683,29 @@ }, "ast": { "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", - "id": 6747, + "id": 7070, "exportedSymbols": { "IERC20": [ - 6213 + 6522 ], "IHyperdrive": [ - 6746 + 7069 ], "IHyperdriveRead": [ - 6830 + 7153 ], "IHyperdriveWrite": [ - 6984 + 7307 ], "IMultiToken": [ - 7044 + 7367 ] }, "nodeType": "SourceUnit", - "src": "39:8882:17", + "src": "39:9704:17", "nodes": [ { - "id": 6394, + "id": 6703, "nodeType": "PragmaDirective", "src": "39:23:17", "nodes": [], @@ -3667,23 +3716,23 @@ ] }, { - "id": 6396, + "id": 6705, "nodeType": "ImportDirective", "src": "64:38:17", "nodes": [], "absolutePath": "contracts/src/interfaces/IERC20.sol", "file": "./IERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 6747, - "sourceUnit": 6214, + "scope": 7070, + "sourceUnit": 6523, "symbolAliases": [ { "foreign": { - "id": 6395, + "id": 6704, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6213, + "referencedDeclaration": 6522, "src": "73:6:17", "typeDescriptions": {} }, @@ -3693,23 +3742,23 @@ "unitAlias": "" }, { - "id": 6398, + "id": 6707, "nodeType": "ImportDirective", "src": "103:56:17", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveRead.sol", "file": "./IHyperdriveRead.sol", "nameLocation": "-1:-1:-1", - "scope": 6747, - "sourceUnit": 6831, + "scope": 7070, + "sourceUnit": 7154, "symbolAliases": [ { "foreign": { - "id": 6397, + "id": 6706, "name": "IHyperdriveRead", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6830, + "referencedDeclaration": 7153, "src": "112:15:17", "typeDescriptions": {} }, @@ -3719,23 +3768,23 @@ "unitAlias": "" }, { - "id": 6400, + "id": 6709, "nodeType": "ImportDirective", "src": "160:58:17", "nodes": [], "absolutePath": "contracts/src/interfaces/IHyperdriveWrite.sol", "file": "./IHyperdriveWrite.sol", "nameLocation": "-1:-1:-1", - "scope": 6747, - "sourceUnit": 6985, + "scope": 7070, + "sourceUnit": 7308, "symbolAliases": [ { "foreign": { - "id": 6399, + "id": 6708, "name": "IHyperdriveWrite", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6984, + "referencedDeclaration": 7307, "src": "169:16:17", "typeDescriptions": {} }, @@ -3745,23 +3794,23 @@ "unitAlias": "" }, { - "id": 6402, + "id": 6711, "nodeType": "ImportDirective", "src": "219:48:17", "nodes": [], "absolutePath": "contracts/src/interfaces/IMultiToken.sol", "file": "./IMultiToken.sol", "nameLocation": "-1:-1:-1", - "scope": 6747, - "sourceUnit": 7045, + "scope": 7070, + "sourceUnit": 7368, "symbolAliases": [ { "foreign": { - "id": 6401, + "id": 6710, "name": "IMultiToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7044, + "referencedDeclaration": 7367, "src": "228:11:17", "typeDescriptions": {} }, @@ -3771,18 +3820,18 @@ "unitAlias": "" }, { - "id": 6746, + "id": 7069, "nodeType": "ContractDefinition", - "src": "269:8651:17", + "src": "269:9473:17", "nodes": [ { - "id": 6419, + "id": 6728, "nodeType": "EventDefinition", "src": "367:132:17", "nodes": [], "anonymous": false, "documentation": { - "id": 6409, + "id": 6718, "nodeType": "StructuredDocumentation", "src": "347:15:17", "text": "Events ///" @@ -3791,18 +3840,18 @@ "name": "Initialize", "nameLocation": "373:10:17", "parameters": { - "id": 6418, + "id": 6727, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6411, + "id": 6720, "indexed": true, "mutability": "mutable", "name": "provider", "nameLocation": "409:8:17", "nodeType": "VariableDeclaration", - "scope": 6419, + "scope": 6728, "src": "393:24:17", "stateVariable": false, "storageLocation": "default", @@ -3811,7 +3860,7 @@ "typeString": "address" }, "typeName": { - "id": 6410, + "id": 6719, "name": "address", "nodeType": "ElementaryTypeName", "src": "393:7:17", @@ -3825,13 +3874,13 @@ }, { "constant": false, - "id": 6413, + "id": 6722, "indexed": false, "mutability": "mutable", "name": "lpAmount", "nameLocation": "435:8:17", "nodeType": "VariableDeclaration", - "scope": 6419, + "scope": 6728, "src": "427:16:17", "stateVariable": false, "storageLocation": "default", @@ -3840,7 +3889,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6412, + "id": 6721, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "427:7:17", @@ -3853,13 +3902,13 @@ }, { "constant": false, - "id": 6415, + "id": 6724, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "461:10:17", "nodeType": "VariableDeclaration", - "scope": 6419, + "scope": 6728, "src": "453:18:17", "stateVariable": false, "storageLocation": "default", @@ -3868,7 +3917,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6414, + "id": 6723, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "453:7:17", @@ -3881,13 +3930,13 @@ }, { "constant": false, - "id": 6417, + "id": 6726, "indexed": false, "mutability": "mutable", "name": "apr", "nameLocation": "489:3:17", "nodeType": "VariableDeclaration", - "scope": 6419, + "scope": 6728, "src": "481:11:17", "stateVariable": false, "storageLocation": "default", @@ -3896,7 +3945,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6416, + "id": 6725, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "481:7:17", @@ -3912,7 +3961,7 @@ } }, { - "id": 6427, + "id": 6736, "nodeType": "EventDefinition", "src": "505:113:17", "nodes": [], @@ -3921,18 +3970,18 @@ "name": "AddLiquidity", "nameLocation": "511:12:17", "parameters": { - "id": 6426, + "id": 6735, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6421, + "id": 6730, "indexed": true, "mutability": "mutable", "name": "provider", "nameLocation": "549:8:17", "nodeType": "VariableDeclaration", - "scope": 6427, + "scope": 6736, "src": "533:24:17", "stateVariable": false, "storageLocation": "default", @@ -3941,7 +3990,7 @@ "typeString": "address" }, "typeName": { - "id": 6420, + "id": 6729, "name": "address", "nodeType": "ElementaryTypeName", "src": "533:7:17", @@ -3955,13 +4004,13 @@ }, { "constant": false, - "id": 6423, + "id": 6732, "indexed": false, "mutability": "mutable", "name": "lpAmount", "nameLocation": "575:8:17", "nodeType": "VariableDeclaration", - "scope": 6427, + "scope": 6736, "src": "567:16:17", "stateVariable": false, "storageLocation": "default", @@ -3970,7 +4019,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6422, + "id": 6731, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "567:7:17", @@ -3983,13 +4032,13 @@ }, { "constant": false, - "id": 6425, + "id": 6734, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "601:10:17", "nodeType": "VariableDeclaration", - "scope": 6427, + "scope": 6736, "src": "593:18:17", "stateVariable": false, "storageLocation": "default", @@ -3998,7 +4047,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6424, + "id": 6733, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "593:7:17", @@ -4014,7 +4063,7 @@ } }, { - "id": 6437, + "id": 6746, "nodeType": "EventDefinition", "src": "624:155:17", "nodes": [], @@ -4023,18 +4072,18 @@ "name": "RemoveLiquidity", "nameLocation": "630:15:17", "parameters": { - "id": 6436, + "id": 6745, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6429, + "id": 6738, "indexed": true, "mutability": "mutable", "name": "provider", "nameLocation": "671:8:17", "nodeType": "VariableDeclaration", - "scope": 6437, + "scope": 6746, "src": "655:24:17", "stateVariable": false, "storageLocation": "default", @@ -4043,7 +4092,7 @@ "typeString": "address" }, "typeName": { - "id": 6428, + "id": 6737, "name": "address", "nodeType": "ElementaryTypeName", "src": "655:7:17", @@ -4057,13 +4106,13 @@ }, { "constant": false, - "id": 6431, + "id": 6740, "indexed": false, "mutability": "mutable", "name": "lpAmount", "nameLocation": "697:8:17", "nodeType": "VariableDeclaration", - "scope": 6437, + "scope": 6746, "src": "689:16:17", "stateVariable": false, "storageLocation": "default", @@ -4072,7 +4121,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6430, + "id": 6739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "689:7:17", @@ -4085,13 +4134,13 @@ }, { "constant": false, - "id": 6433, + "id": 6742, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "723:10:17", "nodeType": "VariableDeclaration", - "scope": 6437, + "scope": 6746, "src": "715:18:17", "stateVariable": false, "storageLocation": "default", @@ -4100,7 +4149,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6432, + "id": 6741, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "715:7:17", @@ -4113,13 +4162,13 @@ }, { "constant": false, - "id": 6435, + "id": 6744, "indexed": false, "mutability": "mutable", "name": "withdrawalShareAmount", "nameLocation": "751:21:17", "nodeType": "VariableDeclaration", - "scope": 6437, + "scope": 6746, "src": "743:29:17", "stateVariable": false, "storageLocation": "default", @@ -4128,7 +4177,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6434, + "id": 6743, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "743:7:17", @@ -4144,7 +4193,7 @@ } }, { - "id": 6445, + "id": 6754, "nodeType": "EventDefinition", "src": "785:136:17", "nodes": [], @@ -4153,18 +4202,18 @@ "name": "RedeemWithdrawalShares", "nameLocation": "791:22:17", "parameters": { - "id": 6444, + "id": 6753, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6439, + "id": 6748, "indexed": true, "mutability": "mutable", "name": "provider", "nameLocation": "839:8:17", "nodeType": "VariableDeclaration", - "scope": 6445, + "scope": 6754, "src": "823:24:17", "stateVariable": false, "storageLocation": "default", @@ -4173,7 +4222,7 @@ "typeString": "address" }, "typeName": { - "id": 6438, + "id": 6747, "name": "address", "nodeType": "ElementaryTypeName", "src": "823:7:17", @@ -4187,13 +4236,13 @@ }, { "constant": false, - "id": 6441, + "id": 6750, "indexed": false, "mutability": "mutable", "name": "withdrawalShareAmount", "nameLocation": "865:21:17", "nodeType": "VariableDeclaration", - "scope": 6445, + "scope": 6754, "src": "857:29:17", "stateVariable": false, "storageLocation": "default", @@ -4202,7 +4251,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6440, + "id": 6749, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "857:7:17", @@ -4215,13 +4264,13 @@ }, { "constant": false, - "id": 6443, + "id": 6752, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "904:10:17", "nodeType": "VariableDeclaration", - "scope": 6445, + "scope": 6754, "src": "896:18:17", "stateVariable": false, "storageLocation": "default", @@ -4230,7 +4279,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6442, + "id": 6751, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "896:7:17", @@ -4246,7 +4295,7 @@ } }, { - "id": 6457, + "id": 6766, "nodeType": "EventDefinition", "src": "927:172:17", "nodes": [], @@ -4255,18 +4304,18 @@ "name": "OpenLong", "nameLocation": "933:8:17", "parameters": { - "id": 6456, + "id": 6765, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6447, + "id": 6756, "indexed": true, "mutability": "mutable", "name": "trader", "nameLocation": "967:6:17", "nodeType": "VariableDeclaration", - "scope": 6457, + "scope": 6766, "src": "951:22:17", "stateVariable": false, "storageLocation": "default", @@ -4275,7 +4324,7 @@ "typeString": "address" }, "typeName": { - "id": 6446, + "id": 6755, "name": "address", "nodeType": "ElementaryTypeName", "src": "951:7:17", @@ -4289,13 +4338,13 @@ }, { "constant": false, - "id": 6449, + "id": 6758, "indexed": true, "mutability": "mutable", "name": "assetId", "nameLocation": "999:7:17", "nodeType": "VariableDeclaration", - "scope": 6457, + "scope": 6766, "src": "983:23:17", "stateVariable": false, "storageLocation": "default", @@ -4304,7 +4353,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6448, + "id": 6757, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "983:7:17", @@ -4317,13 +4366,13 @@ }, { "constant": false, - "id": 6451, + "id": 6760, "indexed": false, "mutability": "mutable", "name": "maturityTime", "nameLocation": "1024:12:17", "nodeType": "VariableDeclaration", - "scope": 6457, + "scope": 6766, "src": "1016:20:17", "stateVariable": false, "storageLocation": "default", @@ -4332,7 +4381,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6450, + "id": 6759, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1016:7:17", @@ -4345,13 +4394,13 @@ }, { "constant": false, - "id": 6453, + "id": 6762, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "1054:10:17", "nodeType": "VariableDeclaration", - "scope": 6457, + "scope": 6766, "src": "1046:18:17", "stateVariable": false, "storageLocation": "default", @@ -4360,7 +4409,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6452, + "id": 6761, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1046:7:17", @@ -4373,13 +4422,13 @@ }, { "constant": false, - "id": 6455, + "id": 6764, "indexed": false, "mutability": "mutable", "name": "bondAmount", "nameLocation": "1082:10:17", "nodeType": "VariableDeclaration", - "scope": 6457, + "scope": 6766, "src": "1074:18:17", "stateVariable": false, "storageLocation": "default", @@ -4388,7 +4437,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6454, + "id": 6763, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1074:7:17", @@ -4404,7 +4453,7 @@ } }, { - "id": 6469, + "id": 6778, "nodeType": "EventDefinition", "src": "1105:173:17", "nodes": [], @@ -4413,18 +4462,18 @@ "name": "OpenShort", "nameLocation": "1111:9:17", "parameters": { - "id": 6468, + "id": 6777, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6459, + "id": 6768, "indexed": true, "mutability": "mutable", "name": "trader", "nameLocation": "1146:6:17", "nodeType": "VariableDeclaration", - "scope": 6469, + "scope": 6778, "src": "1130:22:17", "stateVariable": false, "storageLocation": "default", @@ -4433,7 +4482,7 @@ "typeString": "address" }, "typeName": { - "id": 6458, + "id": 6767, "name": "address", "nodeType": "ElementaryTypeName", "src": "1130:7:17", @@ -4447,13 +4496,13 @@ }, { "constant": false, - "id": 6461, + "id": 6770, "indexed": true, "mutability": "mutable", "name": "assetId", "nameLocation": "1178:7:17", "nodeType": "VariableDeclaration", - "scope": 6469, + "scope": 6778, "src": "1162:23:17", "stateVariable": false, "storageLocation": "default", @@ -4462,7 +4511,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6460, + "id": 6769, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1162:7:17", @@ -4475,13 +4524,13 @@ }, { "constant": false, - "id": 6463, + "id": 6772, "indexed": false, "mutability": "mutable", "name": "maturityTime", "nameLocation": "1203:12:17", "nodeType": "VariableDeclaration", - "scope": 6469, + "scope": 6778, "src": "1195:20:17", "stateVariable": false, "storageLocation": "default", @@ -4490,7 +4539,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6462, + "id": 6771, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1195:7:17", @@ -4503,13 +4552,13 @@ }, { "constant": false, - "id": 6465, + "id": 6774, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "1233:10:17", "nodeType": "VariableDeclaration", - "scope": 6469, + "scope": 6778, "src": "1225:18:17", "stateVariable": false, "storageLocation": "default", @@ -4518,7 +4567,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6464, + "id": 6773, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1225:7:17", @@ -4531,13 +4580,13 @@ }, { "constant": false, - "id": 6467, + "id": 6776, "indexed": false, "mutability": "mutable", "name": "bondAmount", "nameLocation": "1261:10:17", "nodeType": "VariableDeclaration", - "scope": 6469, + "scope": 6778, "src": "1253:18:17", "stateVariable": false, "storageLocation": "default", @@ -4546,7 +4595,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6466, + "id": 6775, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1253:7:17", @@ -4562,7 +4611,7 @@ } }, { - "id": 6481, + "id": 6790, "nodeType": "EventDefinition", "src": "1284:173:17", "nodes": [], @@ -4571,18 +4620,18 @@ "name": "CloseLong", "nameLocation": "1290:9:17", "parameters": { - "id": 6480, + "id": 6789, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6471, + "id": 6780, "indexed": true, "mutability": "mutable", "name": "trader", "nameLocation": "1325:6:17", "nodeType": "VariableDeclaration", - "scope": 6481, + "scope": 6790, "src": "1309:22:17", "stateVariable": false, "storageLocation": "default", @@ -4591,7 +4640,7 @@ "typeString": "address" }, "typeName": { - "id": 6470, + "id": 6779, "name": "address", "nodeType": "ElementaryTypeName", "src": "1309:7:17", @@ -4605,13 +4654,13 @@ }, { "constant": false, - "id": 6473, + "id": 6782, "indexed": true, "mutability": "mutable", "name": "assetId", "nameLocation": "1357:7:17", "nodeType": "VariableDeclaration", - "scope": 6481, + "scope": 6790, "src": "1341:23:17", "stateVariable": false, "storageLocation": "default", @@ -4620,7 +4669,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6472, + "id": 6781, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1341:7:17", @@ -4633,13 +4682,13 @@ }, { "constant": false, - "id": 6475, + "id": 6784, "indexed": false, "mutability": "mutable", "name": "maturityTime", "nameLocation": "1382:12:17", "nodeType": "VariableDeclaration", - "scope": 6481, + "scope": 6790, "src": "1374:20:17", "stateVariable": false, "storageLocation": "default", @@ -4648,7 +4697,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6474, + "id": 6783, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1374:7:17", @@ -4661,13 +4710,13 @@ }, { "constant": false, - "id": 6477, + "id": 6786, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "1412:10:17", "nodeType": "VariableDeclaration", - "scope": 6481, + "scope": 6790, "src": "1404:18:17", "stateVariable": false, "storageLocation": "default", @@ -4676,7 +4725,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6476, + "id": 6785, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1404:7:17", @@ -4689,13 +4738,13 @@ }, { "constant": false, - "id": 6479, + "id": 6788, "indexed": false, "mutability": "mutable", "name": "bondAmount", "nameLocation": "1440:10:17", "nodeType": "VariableDeclaration", - "scope": 6481, + "scope": 6790, "src": "1432:18:17", "stateVariable": false, "storageLocation": "default", @@ -4704,7 +4753,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6478, + "id": 6787, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1432:7:17", @@ -4720,7 +4769,7 @@ } }, { - "id": 6493, + "id": 6802, "nodeType": "EventDefinition", "src": "1463:174:17", "nodes": [], @@ -4729,18 +4778,18 @@ "name": "CloseShort", "nameLocation": "1469:10:17", "parameters": { - "id": 6492, + "id": 6801, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6483, + "id": 6792, "indexed": true, "mutability": "mutable", "name": "trader", "nameLocation": "1505:6:17", "nodeType": "VariableDeclaration", - "scope": 6493, + "scope": 6802, "src": "1489:22:17", "stateVariable": false, "storageLocation": "default", @@ -4749,7 +4798,7 @@ "typeString": "address" }, "typeName": { - "id": 6482, + "id": 6791, "name": "address", "nodeType": "ElementaryTypeName", "src": "1489:7:17", @@ -4763,13 +4812,13 @@ }, { "constant": false, - "id": 6485, + "id": 6794, "indexed": true, "mutability": "mutable", "name": "assetId", "nameLocation": "1537:7:17", "nodeType": "VariableDeclaration", - "scope": 6493, + "scope": 6802, "src": "1521:23:17", "stateVariable": false, "storageLocation": "default", @@ -4778,7 +4827,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6484, + "id": 6793, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1521:7:17", @@ -4791,13 +4840,13 @@ }, { "constant": false, - "id": 6487, + "id": 6796, "indexed": false, "mutability": "mutable", "name": "maturityTime", "nameLocation": "1562:12:17", "nodeType": "VariableDeclaration", - "scope": 6493, + "scope": 6802, "src": "1554:20:17", "stateVariable": false, "storageLocation": "default", @@ -4806,7 +4855,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6486, + "id": 6795, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1554:7:17", @@ -4819,13 +4868,13 @@ }, { "constant": false, - "id": 6489, + "id": 6798, "indexed": false, "mutability": "mutable", "name": "baseAmount", "nameLocation": "1592:10:17", "nodeType": "VariableDeclaration", - "scope": 6493, + "scope": 6802, "src": "1584:18:17", "stateVariable": false, "storageLocation": "default", @@ -4834,7 +4883,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6488, + "id": 6797, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1584:7:17", @@ -4847,13 +4896,13 @@ }, { "constant": false, - "id": 6491, + "id": 6800, "indexed": false, "mutability": "mutable", "name": "bondAmount", "nameLocation": "1620:10:17", "nodeType": "VariableDeclaration", - "scope": 6493, + "scope": 6802, "src": "1612:18:17", "stateVariable": false, "storageLocation": "default", @@ -4862,7 +4911,7 @@ "typeString": "uint256" }, "typeName": { - "id": 6490, + "id": 6799, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1612:7:17", @@ -4878,20 +4927,20 @@ } }, { - "id": 6524, + "id": 6836, "nodeType": "StructDefinition", - "src": "1738:972:17", + "src": "1738:1234:17", "nodes": [], "canonicalName": "IHyperdrive.MarketState", "members": [ { "constant": false, - "id": 6496, + "id": 6805, "mutability": "mutable", "name": "shareReserves", "nameLocation": "1819:13:17", "nodeType": "VariableDeclaration", - "scope": 6524, + "scope": 6836, "src": "1811:21:17", "stateVariable": false, "storageLocation": "default", @@ -4900,7 +4949,7 @@ "typeString": "uint128" }, "typeName": { - "id": 6495, + "id": 6804, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "1811:7:17", @@ -4913,12 +4962,12 @@ }, { "constant": false, - "id": 6499, + "id": 6808, "mutability": "mutable", "name": "bondReserves", "nameLocation": "1893:12:17", "nodeType": "VariableDeclaration", - "scope": 6524, + "scope": 6836, "src": "1885:20:17", "stateVariable": false, "storageLocation": "default", @@ -4927,7 +4976,7 @@ "typeString": "uint128" }, "typeName": { - "id": 6498, + "id": 6807, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "1885:7:17", @@ -4940,12 +4989,12 @@ }, { "constant": false, - "id": 6502, + "id": 6811, "mutability": "mutable", "name": "longsOutstanding", "nameLocation": "1981:16:17", "nodeType": "VariableDeclaration", - "scope": 6524, + "scope": 6836, "src": "1973:24:17", "stateVariable": false, "storageLocation": "default", @@ -4954,7 +5003,7 @@ "typeString": "uint128" }, "typeName": { - "id": 6501, + "id": 6810, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "1973:7:17", @@ -4967,12 +5016,12 @@ }, { "constant": false, - "id": 6505, + "id": 6814, "mutability": "mutable", "name": "shortsOutstanding", "nameLocation": "2074:17:17", "nodeType": "VariableDeclaration", - "scope": 6524, + "scope": 6836, "src": "2066:25:17", "stateVariable": false, "storageLocation": "default", @@ -4981,7 +5030,7 @@ "typeString": "uint128" }, "typeName": { - "id": 6504, + "id": 6813, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "2066:7:17", @@ -4994,13 +5043,13 @@ }, { "constant": false, - "id": 6508, + "id": 6817, "mutability": "mutable", "name": "longAverageMaturityTime", - "nameLocation": "2178:23:17", + "nameLocation": "2183:23:17", "nodeType": "VariableDeclaration", - "scope": 6524, - "src": "2170:31:17", + "scope": 6836, + "src": "2175:31:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5008,10 +5057,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6507, + "id": 6816, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2170:7:17", + "src": "2175:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5021,13 +5070,13 @@ }, { "constant": false, - "id": 6511, + "id": 6820, "mutability": "mutable", "name": "longOpenSharePrice", - "nameLocation": "2275:18:17", + "nameLocation": "2280:18:17", "nodeType": "VariableDeclaration", - "scope": 6524, - "src": "2267:26:17", + "scope": 6836, + "src": "2272:26:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5035,10 +5084,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6510, + "id": 6819, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2267:7:17", + "src": "2272:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5048,13 +5097,13 @@ }, { "constant": false, - "id": 6514, + "id": 6823, "mutability": "mutable", "name": "shortAverageMaturityTime", - "nameLocation": "2380:24:17", + "nameLocation": "2391:24:17", "nodeType": "VariableDeclaration", - "scope": 6524, - "src": "2372:32:17", + "scope": 6836, + "src": "2383:32:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5062,10 +5111,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6513, + "id": 6822, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2372:7:17", + "src": "2383:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5075,13 +5124,40 @@ }, { "constant": false, - "id": 6517, + "id": 6826, + "mutability": "mutable", + "name": "shareAdjustment", + "nameLocation": "2651:15:17", + "nodeType": "VariableDeclaration", + "scope": 6836, + "src": "2644:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 6825, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "2644:6:17", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6829, "mutability": "mutable", "name": "longExposure", - "nameLocation": "2489:12:17", + "nameLocation": "2751:12:17", "nodeType": "VariableDeclaration", - "scope": 6524, - "src": "2481:20:17", + "scope": 6836, + "src": "2743:20:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5089,10 +5165,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6516, + "id": 6828, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "2481:7:17", + "src": "2743:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5102,13 +5178,13 @@ }, { "constant": false, - "id": 6520, + "id": 6832, "mutability": "mutable", "name": "isInitialized", - "nameLocation": "2597:13:17", + "nameLocation": "2859:13:17", "nodeType": "VariableDeclaration", - "scope": 6524, - "src": "2592:18:17", + "scope": 6836, + "src": "2854:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5116,10 +5192,10 @@ "typeString": "bool" }, "typeName": { - "id": 6519, + "id": 6831, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2592:4:17", + "src": "2854:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5129,13 +5205,13 @@ }, { "constant": false, - "id": 6523, + "id": 6835, "mutability": "mutable", "name": "isPaused", - "nameLocation": "2695:8:17", + "nameLocation": "2957:8:17", "nodeType": "VariableDeclaration", - "scope": 6524, - "src": "2690:13:17", + "scope": 6836, + "src": "2952:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5143,10 +5219,10 @@ "typeString": "bool" }, "typeName": { - "id": 6522, + "id": 6834, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2690:4:17", + "src": "2952:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5157,25 +5233,25 @@ ], "name": "MarketState", "nameLocation": "1745:11:17", - "scope": 6746, + "scope": 7069, "visibility": "public" }, { - "id": 6534, + "id": 6846, "nodeType": "StructDefinition", - "src": "2790:777:17", + "src": "3052:777:17", "nodes": [], "canonicalName": "IHyperdrive.Checkpoint", "members": [ { "constant": false, - "id": 6527, + "id": 6839, "mutability": "mutable", "name": "sharePrice", - "nameLocation": "3084:10:17", + "nameLocation": "3346:10:17", "nodeType": "VariableDeclaration", - "scope": 6534, - "src": "3076:18:17", + "scope": 6846, + "src": "3338:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5183,10 +5259,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6526, + "id": 6838, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3076:7:17", + "src": "3338:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5196,13 +5272,13 @@ }, { "constant": false, - "id": 6530, + "id": 6842, "mutability": "mutable", "name": "longSharePrice", - "nameLocation": "3467:14:17", + "nameLocation": "3729:14:17", "nodeType": "VariableDeclaration", - "scope": 6534, - "src": "3459:22:17", + "scope": 6846, + "src": "3721:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5210,10 +5286,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6529, + "id": 6841, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3459:7:17", + "src": "3721:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5223,13 +5299,13 @@ }, { "constant": false, - "id": 6533, + "id": 6845, "mutability": "mutable", "name": "longExposure", - "nameLocation": "3548:12:17", + "nameLocation": "3810:12:17", "nodeType": "VariableDeclaration", - "scope": 6534, - "src": "3541:19:17", + "scope": 6846, + "src": "3803:19:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5237,10 +5313,10 @@ "typeString": "int128" }, "typeName": { - "id": 6532, + "id": 6844, "name": "int128", "nodeType": "ElementaryTypeName", - "src": "3541:6:17", + "src": "3803:6:17", "typeDescriptions": { "typeIdentifier": "t_int128", "typeString": "int128" @@ -5250,26 +5326,26 @@ } ], "name": "Checkpoint", - "nameLocation": "2797:10:17", - "scope": 6746, + "nameLocation": "3059:10:17", + "scope": 7069, "visibility": "public" }, { - "id": 6541, + "id": 6853, "nodeType": "StructDefinition", - "src": "3573:230:17", + "src": "3835:230:17", "nodes": [], "canonicalName": "IHyperdrive.WithdrawPool", "members": [ { "constant": false, - "id": 6537, + "id": 6849, "mutability": "mutable", "name": "readyToWithdraw", - "nameLocation": "3691:15:17", + "nameLocation": "3953:15:17", "nodeType": "VariableDeclaration", - "scope": 6541, - "src": "3683:23:17", + "scope": 6853, + "src": "3945:23:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5277,10 +5353,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6536, + "id": 6848, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3683:7:17", + "src": "3945:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5290,13 +5366,13 @@ }, { "constant": false, - "id": 6540, + "id": 6852, "mutability": "mutable", "name": "proceeds", - "nameLocation": "3788:8:17", + "nameLocation": "4050:8:17", "nodeType": "VariableDeclaration", - "scope": 6541, - "src": "3780:16:17", + "scope": 6853, + "src": "4042:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5304,10 +5380,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6539, + "id": 6851, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "3780:7:17", + "src": "4042:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -5317,26 +5393,26 @@ } ], "name": "WithdrawPool", - "nameLocation": "3580:12:17", - "scope": 6746, + "nameLocation": "3842:12:17", + "scope": 7069, "visibility": "public" }, { - "id": 6551, + "id": 6863, "nodeType": "StructDefinition", - "src": "3809:297:17", + "src": "4071:297:17", "nodes": [], "canonicalName": "IHyperdrive.Fees", "members": [ { "constant": false, - "id": 6544, + "id": 6856, "mutability": "mutable", "name": "curve", - "nameLocation": "3908:5:17", + "nameLocation": "4170:5:17", "nodeType": "VariableDeclaration", - "scope": 6551, - "src": "3900:13:17", + "scope": 6863, + "src": "4162:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5344,10 +5420,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6543, + "id": 6855, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3900:7:17", + "src": "4162:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5357,13 +5433,13 @@ }, { "constant": false, - "id": 6547, + "id": 6859, "mutability": "mutable", "name": "flat", - "nameLocation": "3999:4:17", + "nameLocation": "4261:4:17", "nodeType": "VariableDeclaration", - "scope": 6551, - "src": "3991:12:17", + "scope": 6863, + "src": "4253:12:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5371,10 +5447,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6546, + "id": 6858, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3991:7:17", + "src": "4253:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5384,13 +5460,13 @@ }, { "constant": false, - "id": 6550, + "id": 6862, "mutability": "mutable", "name": "governance", - "nameLocation": "4089:10:17", + "nameLocation": "4351:10:17", "nodeType": "VariableDeclaration", - "scope": 6551, - "src": "4081:18:17", + "scope": 6863, + "src": "4343:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5398,10 +5474,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6549, + "id": 6861, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4081:7:17", + "src": "4343:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5411,49 +5487,49 @@ } ], "name": "Fees", - "nameLocation": "3816:4:17", - "scope": 6746, + "nameLocation": "4078:4:17", + "scope": 7069, "visibility": "public" }, { - "id": 6587, + "id": 6902, "nodeType": "StructDefinition", - "src": "4112:962:17", + "src": "4374:1093:17", "nodes": [], "canonicalName": "IHyperdrive.PoolConfig", "members": [ { "constant": false, - "id": 6555, + "id": 6867, "mutability": "mutable", "name": "baseToken", - "nameLocation": "4195:9:17", + "nameLocation": "4457:9:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4188:16:17", + "scope": 6902, + "src": "4450:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$6213", + "typeIdentifier": "t_contract$_IERC20_$6522", "typeString": "contract IERC20" }, "typeName": { - "id": 6554, + "id": 6866, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 6553, + "id": 6865, "name": "IERC20", "nameLocations": [ - "4188:6:17" + "4450:6:17" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6213, - "src": "4188:6:17" + "referencedDeclaration": 6522, + "src": "4450:6:17" }, - "referencedDeclaration": 6213, - "src": "4188:6:17", + "referencedDeclaration": 6522, + "src": "4450:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$6213", + "typeIdentifier": "t_contract$_IERC20_$6522", "typeString": "contract IERC20" } }, @@ -5461,13 +5537,13 @@ }, { "constant": false, - "id": 6558, + "id": 6870, "mutability": "mutable", "name": "initialSharePrice", - "nameLocation": "4264:17:17", + "nameLocation": "4526:17:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4256:25:17", + "scope": 6902, + "src": "4518:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5475,10 +5551,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6557, + "id": 6869, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4256:7:17", + "src": "4518:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5488,13 +5564,13 @@ }, { "constant": false, - "id": 6561, + "id": 6873, "mutability": "mutable", "name": "minimumShareReserves", - "nameLocation": "4344:20:17", + "nameLocation": "4606:20:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4336:28:17", + "scope": 6902, + "src": "4598:28:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5502,10 +5578,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6560, + "id": 6872, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4336:7:17", + "src": "4598:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5515,13 +5591,40 @@ }, { "constant": false, - "id": 6564, + "id": 6876, + "mutability": "mutable", + "name": "minimumTransactionAmount", + "nameLocation": "4733:24:17", + "nodeType": "VariableDeclaration", + "scope": 6902, + "src": "4725:32:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6875, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4725:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6879, "mutability": "mutable", "name": "positionDuration", - "nameLocation": "4445:16:17", + "nameLocation": "4838:16:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4437:24:17", + "scope": 6902, + "src": "4830:24:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5529,10 +5632,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6563, + "id": 6878, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4437:7:17", + "src": "4830:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5542,13 +5645,13 @@ }, { "constant": false, - "id": 6567, + "id": 6882, "mutability": "mutable", "name": "checkpointDuration", - "nameLocation": "4526:18:17", + "nameLocation": "4919:18:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4518:26:17", + "scope": 6902, + "src": "4911:26:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5556,10 +5659,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6566, + "id": 6881, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4518:7:17", + "src": "4911:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5569,13 +5672,13 @@ }, { "constant": false, - "id": 6570, + "id": 6885, "mutability": "mutable", "name": "timeStretch", - "nameLocation": "4638:11:17", + "nameLocation": "5031:11:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4630:19:17", + "scope": 6902, + "src": "5023:19:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5583,10 +5686,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6569, + "id": 6884, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4630:7:17", + "src": "5023:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5596,13 +5699,13 @@ }, { "constant": false, - "id": 6573, + "id": 6888, "mutability": "mutable", "name": "governance", - "nameLocation": "4724:10:17", + "nameLocation": "5117:10:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4716:18:17", + "scope": 6902, + "src": "5109:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5610,10 +5713,10 @@ "typeString": "address" }, "typeName": { - "id": 6572, + "id": 6887, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4716:7:17", + "src": "5109:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5624,13 +5727,13 @@ }, { "constant": false, - "id": 6576, + "id": 6891, "mutability": "mutable", "name": "feeCollector", - "nameLocation": "4812:12:17", + "nameLocation": "5205:12:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4804:20:17", + "scope": 6902, + "src": "5197:20:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5638,10 +5741,10 @@ "typeString": "address" }, "typeName": { - "id": 6575, + "id": 6890, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4804:7:17", + "src": "5197:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5652,37 +5755,37 @@ }, { "constant": false, - "id": 6580, + "id": 6895, "mutability": "mutable", "name": "fees", - "nameLocation": "4896:4:17", + "nameLocation": "5289:4:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4879:21:17", + "scope": 6902, + "src": "5272:21:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Fees_$6551_storage_ptr", + "typeIdentifier": "t_struct$_Fees_$6863_storage_ptr", "typeString": "struct IHyperdrive.Fees" }, "typeName": { - "id": 6579, + "id": 6894, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 6578, + "id": 6893, "name": "IHyperdrive.Fees", "nameLocations": [ - "4879:11:17", - "4891:4:17" + "5272:11:17", + "5284:4:17" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6551, - "src": "4879:16:17" + "referencedDeclaration": 6863, + "src": "5272:16:17" }, - "referencedDeclaration": 6551, - "src": "4879:16:17", + "referencedDeclaration": 6863, + "src": "5272:16:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Fees_$6551_storage_ptr", + "typeIdentifier": "t_struct$_Fees_$6863_storage_ptr", "typeString": "struct IHyperdrive.Fees" } }, @@ -5690,13 +5793,13 @@ }, { "constant": false, - "id": 6583, + "id": 6898, "mutability": "mutable", "name": "oracleSize", - "nameLocation": "4972:10:17", + "nameLocation": "5365:10:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "4964:18:17", + "scope": 6902, + "src": "5357:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5704,10 +5807,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6582, + "id": 6897, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4964:7:17", + "src": "5357:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5717,13 +5820,13 @@ }, { "constant": false, - "id": 6586, + "id": 6901, "mutability": "mutable", "name": "updateGap", - "nameLocation": "5058:9:17", + "nameLocation": "5451:9:17", "nodeType": "VariableDeclaration", - "scope": 6587, - "src": "5050:17:17", + "scope": 6902, + "src": "5443:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5731,10 +5834,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6585, + "id": 6900, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5050:7:17", + "src": "5443:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5744,26 +5847,26 @@ } ], "name": "PoolConfig", - "nameLocation": "4119:10:17", - "scope": 6746, + "nameLocation": "4381:10:17", + "scope": 7069, "visibility": "public" }, { - "id": 6624, + "id": 6942, "nodeType": "StructDefinition", - "src": "5080:1272:17", + "src": "5473:1529:17", "nodes": [], "canonicalName": "IHyperdrive.PoolInfo", "members": [ { "constant": false, - "id": 6590, + "id": 6905, "mutability": "mutable", "name": "shareReserves", - "nameLocation": "5172:13:17", + "nameLocation": "5565:13:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5164:21:17", + "scope": 6942, + "src": "5557:21:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5771,10 +5874,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6589, + "id": 6904, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5164:7:17", + "src": "5557:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5784,13 +5887,40 @@ }, { "constant": false, - "id": 6593, + "id": 6908, + "mutability": "mutable", + "name": "shareAdjustment", + "nameLocation": "5820:15:17", + "nodeType": "VariableDeclaration", + "scope": 6942, + "src": "5813:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6907, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "5813:6:17", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6911, "mutability": "mutable", "name": "bondReserves", - "nameLocation": "5260:12:17", + "nameLocation": "5910:12:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5252:20:17", + "scope": 6942, + "src": "5902:20:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5798,10 +5928,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6592, + "id": 6910, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5252:7:17", + "src": "5902:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5811,13 +5941,13 @@ }, { "constant": false, - "id": 6596, + "id": 6914, "mutability": "mutable", "name": "lpTotalSupply", - "nameLocation": "5338:13:17", + "nameLocation": "5988:13:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5330:21:17", + "scope": 6942, + "src": "5980:21:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5825,10 +5955,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6595, + "id": 6913, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5330:7:17", + "src": "5980:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5838,13 +5968,13 @@ }, { "constant": false, - "id": 6599, + "id": 6917, "mutability": "mutable", "name": "sharePrice", - "nameLocation": "5411:10:17", + "nameLocation": "6061:10:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5403:18:17", + "scope": 6942, + "src": "6053:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5852,10 +5982,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6598, + "id": 6916, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5403:7:17", + "src": "6053:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5865,13 +5995,13 @@ }, { "constant": false, - "id": 6602, + "id": 6920, "mutability": "mutable", "name": "longsOutstanding", - "nameLocation": "5517:16:17", + "nameLocation": "6167:16:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5509:24:17", + "scope": 6942, + "src": "6159:24:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5879,10 +6009,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6601, + "id": 6919, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5509:7:17", + "src": "6159:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5892,13 +6022,13 @@ }, { "constant": false, - "id": 6605, + "id": 6923, "mutability": "mutable", "name": "longAverageMaturityTime", - "nameLocation": "5620:23:17", + "nameLocation": "6270:23:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5612:31:17", + "scope": 6942, + "src": "6262:31:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5906,10 +6036,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6604, + "id": 6922, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5612:7:17", + "src": "6262:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5919,13 +6049,13 @@ }, { "constant": false, - "id": 6608, + "id": 6926, "mutability": "mutable", "name": "shortsOutstanding", - "nameLocation": "5740:17:17", + "nameLocation": "6390:17:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5732:25:17", + "scope": 6942, + "src": "6382:25:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5933,10 +6063,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6607, + "id": 6925, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5732:7:17", + "src": "6382:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5946,13 +6076,13 @@ }, { "constant": false, - "id": 6611, + "id": 6929, "mutability": "mutable", "name": "shortAverageMaturityTime", - "nameLocation": "5845:24:17", + "nameLocation": "6495:24:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5837:32:17", + "scope": 6942, + "src": "6487:32:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5960,10 +6090,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6610, + "id": 6928, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5837:7:17", + "src": "6487:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5973,13 +6103,13 @@ }, { "constant": false, - "id": 6614, + "id": 6932, "mutability": "mutable", "name": "withdrawalSharesReadyToWithdraw", - "nameLocation": "5967:31:17", + "nameLocation": "6617:31:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "5959:39:17", + "scope": 6942, + "src": "6609:39:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5987,10 +6117,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6613, + "id": 6931, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5959:7:17", + "src": "6609:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6000,13 +6130,13 @@ }, { "constant": false, - "id": 6617, + "id": 6935, "mutability": "mutable", "name": "withdrawalSharesProceeds", - "nameLocation": "6080:24:17", + "nameLocation": "6730:24:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "6072:32:17", + "scope": 6942, + "src": "6722:32:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6014,10 +6144,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6616, + "id": 6934, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6072:7:17", + "src": "6722:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6027,13 +6157,13 @@ }, { "constant": false, - "id": 6620, + "id": 6938, "mutability": "mutable", "name": "lpSharePrice", - "nameLocation": "6232:12:17", + "nameLocation": "6882:12:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "6224:20:17", + "scope": 6942, + "src": "6874:20:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6041,10 +6171,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6619, + "id": 6937, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6224:7:17", + "src": "6874:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6054,13 +6184,13 @@ }, { "constant": false, - "id": 6623, + "id": 6941, "mutability": "mutable", "name": "longExposure", - "nameLocation": "6333:12:17", + "nameLocation": "6983:12:17", "nodeType": "VariableDeclaration", - "scope": 6624, - "src": "6325:20:17", + "scope": 6942, + "src": "6975:20:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6068,10 +6198,10 @@ "typeString": "uint256" }, "typeName": { - "id": 6622, + "id": 6940, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6325:7:17", + "src": "6975:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6081,26 +6211,26 @@ } ], "name": "PoolInfo", - "nameLocation": "5087:8:17", - "scope": 6746, + "nameLocation": "5480:8:17", + "scope": 7069, "visibility": "public" }, { - "id": 6631, + "id": 6949, "nodeType": "StructDefinition", - "src": "6358:205:17", + "src": "7008:205:17", "nodes": [], "canonicalName": "IHyperdrive.OracleState", "members": [ { "constant": false, - "id": 6627, + "id": 6945, "mutability": "mutable", "name": "head", - "nameLocation": "6459:4:17", + "nameLocation": "7109:4:17", "nodeType": "VariableDeclaration", - "scope": 6631, - "src": "6451:12:17", + "scope": 6949, + "src": "7101:12:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6108,10 +6238,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6626, + "id": 6944, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "6451:7:17", + "src": "7101:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -6121,13 +6251,13 @@ }, { "constant": false, - "id": 6630, + "id": 6948, "mutability": "mutable", "name": "lastTimestamp", - "nameLocation": "6543:13:17", + "nameLocation": "7193:13:17", "nodeType": "VariableDeclaration", - "scope": 6631, - "src": "6535:21:17", + "scope": 6949, + "src": "7185:21:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6135,10 +6265,10 @@ "typeString": "uint128" }, "typeName": { - "id": 6629, + "id": 6947, "name": "uint128", "nodeType": "ElementaryTypeName", - "src": "6535:7:17", + "src": "7185:7:17", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" @@ -6148,469 +6278,484 @@ } ], "name": "OracleState", - "nameLocation": "6365:11:17", - "scope": 6746, + "nameLocation": "7015:11:17", + "scope": 7069, "visibility": "public" }, { - "id": 6634, + "id": 6952, "nodeType": "ErrorDefinition", - "src": "6675:23:17", + "src": "7325:23:17", "nodes": [], "documentation": { - "id": 6632, + "id": 6950, "nodeType": "StructuredDocumentation", - "src": "6594:76:17", + "src": "7244:76:17", "text": "##################\n ### Hyperdrive ###\n ##################" }, "errorSelector": "8164f842", "name": "ApprovalFailed", - "nameLocation": "6681:14:17", + "nameLocation": "7331:14:17", "parameters": { - "id": 6633, + "id": 6951, "nodeType": "ParameterList", "parameters": [], - "src": "6695:2:17" + "src": "7345:2:17" } }, { - "id": 6636, + "id": 6954, "nodeType": "ErrorDefinition", - "src": "6703:39:17", + "src": "7353:39:17", "nodes": [], "errorSelector": "18846de9", "name": "BaseBufferExceedsShareReserves", - "nameLocation": "6709:30:17", + "nameLocation": "7359:30:17", "parameters": { - "id": 6635, + "id": 6953, "nodeType": "ParameterList", "parameters": [], - "src": "6739:2:17" + "src": "7389:2:17" } }, { - "id": 6638, + "id": 6956, "nodeType": "ErrorDefinition", - "src": "6747:33:17", + "src": "7397:33:17", "nodes": [], "errorSelector": "abed41c4", "name": "BelowMinimumContribution", - "nameLocation": "6753:24:17", + "nameLocation": "7403:24:17", "parameters": { - "id": 6637, + "id": 6955, "nodeType": "ParameterList", "parameters": [], - "src": "6777:2:17" + "src": "7427:2:17" } }, { - "id": 6640, + "id": 6958, "nodeType": "ErrorDefinition", - "src": "6785:34:17", + "src": "7435:34:17", "nodes": [], "errorSelector": "6101d7a4", "name": "BelowMinimumShareReserves", - "nameLocation": "6791:25:17", + "nameLocation": "7441:25:17", "parameters": { - "id": 6639, + "id": 6957, "nodeType": "ParameterList", "parameters": [], - "src": "6816:2:17" + "src": "7466:2:17" } }, { - "id": 6642, + "id": 6960, "nodeType": "ErrorDefinition", - "src": "6824:19:17", + "src": "7474:19:17", "nodes": [], "errorSelector": "76c22a22", "name": "InvalidApr", - "nameLocation": "6830:10:17", + "nameLocation": "7480:10:17", "parameters": { - "id": 6641, + "id": 6959, "nodeType": "ParameterList", "parameters": [], - "src": "6840:2:17" + "src": "7490:2:17" } }, { - "id": 6644, + "id": 6962, "nodeType": "ErrorDefinition", - "src": "6848:25:17", + "src": "7498:25:17", "nodes": [], "errorSelector": "0e442a4a", "name": "InvalidBaseToken", - "nameLocation": "6854:16:17", + "nameLocation": "7504:16:17", "parameters": { - "id": 6643, + "id": 6961, "nodeType": "ParameterList", "parameters": [], - "src": "6870:2:17" + "src": "7520:2:17" } }, { - "id": 6646, + "id": 6964, "nodeType": "ErrorDefinition", - "src": "6878:30:17", + "src": "7528:30:17", "nodes": [], "errorSelector": "ecd29e81", "name": "InvalidCheckpointTime", - "nameLocation": "6884:21:17", + "nameLocation": "7534:21:17", "parameters": { - "id": 6645, + "id": 6963, "nodeType": "ParameterList", "parameters": [], - "src": "6905:2:17" + "src": "7555:2:17" } }, { - "id": 6648, + "id": 6966, "nodeType": "ErrorDefinition", - "src": "6913:34:17", + "src": "7563:34:17", "nodes": [], "errorSelector": "5428734d", "name": "InvalidCheckpointDuration", - "nameLocation": "6919:25:17", + "nameLocation": "7569:25:17", "parameters": { - "id": 6647, + "id": 6965, "nodeType": "ParameterList", "parameters": [], - "src": "6944:2:17" + "src": "7594:2:17" } }, { - "id": 6650, + "id": 6968, "nodeType": "ErrorDefinition", - "src": "6952:33:17", + "src": "7602:33:17", "nodes": [], "errorSelector": "55f2a42f", "name": "InvalidInitialSharePrice", - "nameLocation": "6958:24:17", + "nameLocation": "7608:24:17", "parameters": { - "id": 6649, + "id": 6967, "nodeType": "ParameterList", "parameters": [], - "src": "6982:2:17" + "src": "7632:2:17" } }, { - "id": 6652, + "id": 6970, "nodeType": "ErrorDefinition", - "src": "6990:28:17", + "src": "7640:28:17", "nodes": [], "errorSelector": "987dadd3", "name": "InvalidMaturityTime", - "nameLocation": "6996:19:17", + "nameLocation": "7646:19:17", "parameters": { - "id": 6651, + "id": 6969, "nodeType": "ParameterList", "parameters": [], - "src": "7015:2:17" + "src": "7665:2:17" } }, { - "id": 6654, + "id": 6972, "nodeType": "ErrorDefinition", - "src": "7023:36:17", + "src": "7673:36:17", "nodes": [], "errorSelector": "49db44f5", "name": "InvalidMinimumShareReserves", - "nameLocation": "7029:27:17", + "nameLocation": "7679:27:17", "parameters": { - "id": 6653, + "id": 6971, "nodeType": "ParameterList", "parameters": [], - "src": "7056:2:17" + "src": "7706:2:17" } }, { - "id": 6656, + "id": 6974, "nodeType": "ErrorDefinition", - "src": "7064:32:17", + "src": "7714:32:17", "nodes": [], "errorSelector": "4a7fff9e", "name": "InvalidPositionDuration", - "nameLocation": "7070:23:17", + "nameLocation": "7720:23:17", "parameters": { - "id": 6655, + "id": 6973, "nodeType": "ParameterList", "parameters": [], - "src": "7093:2:17" + "src": "7743:2:17" } }, { - "id": 6658, + "id": 6976, "nodeType": "ErrorDefinition", - "src": "7101:29:17", + "src": "7751:29:17", "nodes": [], "errorSelector": "b0bfcdbe", "name": "InvalidShareReserves", - "nameLocation": "7107:20:17", + "nameLocation": "7757:20:17", "parameters": { - "id": 6657, + "id": 6975, "nodeType": "ParameterList", "parameters": [], - "src": "7127:2:17" + "src": "7777:2:17" } }, { - "id": 6660, + "id": 6978, "nodeType": "ErrorDefinition", - "src": "7135:26:17", + "src": "7785:26:17", "nodes": [], "errorSelector": "45ee5986", "name": "InvalidFeeAmounts", - "nameLocation": "7141:17:17", + "nameLocation": "7791:17:17", "parameters": { - "id": 6659, + "id": 6977, "nodeType": "ParameterList", "parameters": [], - "src": "7158:2:17" + "src": "7808:2:17" } }, { - "id": 6662, + "id": 6980, "nodeType": "ErrorDefinition", - "src": "7166:25:17", + "src": "7816:25:17", "nodes": [], "errorSelector": "512095c7", "name": "NegativeInterest", - "nameLocation": "7172:16:17", + "nameLocation": "7822:16:17", "parameters": { - "id": 6661, + "id": 6979, "nodeType": "ParameterList", "parameters": [], - "src": "7188:2:17" + "src": "7838:2:17" } }, { - "id": 6664, + "id": 6982, "nodeType": "ErrorDefinition", - "src": "7196:27:17", + "src": "7846:29:17", + "nodes": [], + "errorSelector": "aeeb825d", + "name": "NegativePresentValue", + "nameLocation": "7852:20:17", + "parameters": { + "id": 6981, + "nodeType": "ParameterList", + "parameters": [], + "src": "7872:2:17" + } + }, + { + "id": 6984, + "nodeType": "ErrorDefinition", + "src": "7880:27:17", "nodes": [], "errorSelector": "bb464a5e", "name": "NoAssetsToWithdraw", - "nameLocation": "7202:18:17", + "nameLocation": "7886:18:17", "parameters": { - "id": 6663, + "id": 6983, "nodeType": "ParameterList", "parameters": [], - "src": "7220:2:17" + "src": "7904:2:17" } }, { - "id": 6666, + "id": 6986, "nodeType": "ErrorDefinition", - "src": "7228:19:17", + "src": "7912:19:17", "nodes": [], "errorSelector": "1574f9f3", "name": "NotPayable", - "nameLocation": "7234:10:17", + "nameLocation": "7918:10:17", "parameters": { - "id": 6665, + "id": 6985, "nodeType": "ParameterList", "parameters": [], - "src": "7244:2:17" + "src": "7928:2:17" } }, { - "id": 6668, + "id": 6988, "nodeType": "ErrorDefinition", - "src": "7252:20:17", + "src": "7936:20:17", "nodes": [], "errorSelector": "c9726517", "name": "OutputLimit", - "nameLocation": "7258:11:17", + "nameLocation": "7942:11:17", "parameters": { - "id": 6667, + "id": 6987, "nodeType": "ParameterList", "parameters": [], - "src": "7269:2:17" + "src": "7953:2:17" } }, { - "id": 6670, + "id": 6990, "nodeType": "ErrorDefinition", - "src": "7277:15:17", + "src": "7961:15:17", "nodes": [], "errorSelector": "9e87fac8", "name": "Paused", - "nameLocation": "7283:6:17", + "nameLocation": "7967:6:17", "parameters": { - "id": 6669, + "id": 6989, "nodeType": "ParameterList", "parameters": [], - "src": "7289:2:17" + "src": "7973:2:17" } }, { - "id": 6672, + "id": 6992, "nodeType": "ErrorDefinition", - "src": "7297:31:17", + "src": "7981:31:17", "nodes": [], "errorSelector": "7983c051", "name": "PoolAlreadyInitialized", - "nameLocation": "7303:22:17", + "nameLocation": "7987:22:17", "parameters": { - "id": 6671, + "id": 6991, "nodeType": "ParameterList", "parameters": [], - "src": "7325:2:17" + "src": "8009:2:17" } }, { - "id": 6674, + "id": 6994, "nodeType": "ErrorDefinition", - "src": "7333:51:17", + "src": "8017:51:17", "nodes": [], "errorSelector": "97c01bef", "name": "ShareReservesDeltaExceedsBondReservesDelta", - "nameLocation": "7339:42:17", + "nameLocation": "8023:42:17", "parameters": { - "id": 6673, + "id": 6993, "nodeType": "ParameterList", "parameters": [], - "src": "7381:2:17" + "src": "8065:2:17" } }, { - "id": 6676, + "id": 6996, "nodeType": "ErrorDefinition", - "src": "7389:23:17", + "src": "8073:23:17", "nodes": [], "errorSelector": "90b8ec18", "name": "TransferFailed", - "nameLocation": "7395:14:17", + "nameLocation": "8079:14:17", "parameters": { - "id": 6675, + "id": 6995, "nodeType": "ParameterList", "parameters": [], - "src": "7409:2:17" + "src": "8093:2:17" } }, { - "id": 6678, + "id": 6998, "nodeType": "ErrorDefinition", - "src": "7417:26:17", + "src": "8101:26:17", "nodes": [], "errorSelector": "e9bf5433", "name": "UnexpectedAssetId", - "nameLocation": "7423:17:17", + "nameLocation": "8107:17:17", "parameters": { - "id": 6677, + "id": 6997, "nodeType": "ParameterList", "parameters": [], - "src": "7440:2:17" + "src": "8124:2:17" } }, { - "id": 6680, + "id": 7000, "nodeType": "ErrorDefinition", - "src": "7448:25:17", + "src": "8132:25:17", "nodes": [], "errorSelector": "f2fb3812", "name": "UnexpectedSender", - "nameLocation": "7454:16:17", + "nameLocation": "8138:16:17", "parameters": { - "id": 6679, + "id": 6999, "nodeType": "ParameterList", "parameters": [], - "src": "7470:2:17" + "src": "8154:2:17" } }, { - "id": 6682, + "id": 7002, "nodeType": "ErrorDefinition", - "src": "7478:25:17", + "src": "8162:25:17", "nodes": [], "errorSelector": "6a172882", "name": "UnsupportedToken", - "nameLocation": "7484:16:17", + "nameLocation": "8168:16:17", "parameters": { - "id": 6681, + "id": 7001, "nodeType": "ParameterList", "parameters": [], - "src": "7500:2:17" + "src": "8184:2:17" } }, { - "id": 6684, + "id": 7004, "nodeType": "ErrorDefinition", - "src": "7508:19:17", + "src": "8192:33:17", "nodes": [], - "errorSelector": "1f2a2005", - "name": "ZeroAmount", - "nameLocation": "7514:10:17", + "errorSelector": "423bbb46", + "name": "MinimumTransactionAmount", + "nameLocation": "8198:24:17", "parameters": { - "id": 6683, + "id": 7003, "nodeType": "ParameterList", "parameters": [], - "src": "7524:2:17" + "src": "8222:2:17" } }, { - "id": 6686, + "id": 7006, "nodeType": "ErrorDefinition", - "src": "7532:26:17", + "src": "8230:26:17", "nodes": [], "errorSelector": "252c3a3e", "name": "ZeroLpTotalSupply", - "nameLocation": "7538:17:17", + "nameLocation": "8236:17:17", "parameters": { - "id": 6685, + "id": 7005, "nodeType": "ParameterList", "parameters": [], - "src": "7555:2:17" + "src": "8253:2:17" } }, { - "id": 6689, + "id": 7009, "nodeType": "ErrorDefinition", - "src": "7627:24:17", + "src": "8325:24:17", "nodes": [], "documentation": { - "id": 6687, + "id": 7007, "nodeType": "StructuredDocumentation", - "src": "7564:58:17", + "src": "8262:58:17", "text": "############\n ### TWAP ###\n ############" }, "errorSelector": "a89817b0", "name": "QueryOutOfRange", - "nameLocation": "7633:15:17", + "nameLocation": "8331:15:17", "parameters": { - "id": 6688, + "id": 7008, "nodeType": "ParameterList", "parameters": [], - "src": "7648:2:17" + "src": "8346:2:17" } }, { - "id": 6694, + "id": 7014, "nodeType": "ErrorDefinition", - "src": "7744:29:17", + "src": "8442:29:17", "nodes": [], "documentation": { - "id": 6690, + "id": 7010, "nodeType": "StructuredDocumentation", - "src": "7657:82:17", + "src": "8355:82:17", "text": "####################\n ### DataProvider ###\n ####################" }, "errorSelector": "dcc81126", "name": "ReturnData", - "nameLocation": "7750:10:17", + "nameLocation": "8448:10:17", "parameters": { - "id": 6693, + "id": 7013, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6692, + "id": 7012, "mutability": "mutable", "name": "data", - "nameLocation": "7767:4:17", + "nameLocation": "8465:4:17", "nodeType": "VariableDeclaration", - "scope": 6694, - "src": "7761:10:17", + "scope": 7014, + "src": "8459:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6618,10 +6763,10 @@ "typeString": "bytes" }, "typeName": { - "id": 6691, + "id": 7011, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "7761:5:17", + "src": "8459:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6630,30 +6775,30 @@ "visibility": "internal" } ], - "src": "7760:12:17" + "src": "8458:12:17" } }, { - "id": 6698, + "id": 7018, "nodeType": "ErrorDefinition", - "src": "7778:41:17", + "src": "8476:41:17", "nodes": [], "errorSelector": "efa64d4b", "name": "CallFailed", - "nameLocation": "7784:10:17", + "nameLocation": "8482:10:17", "parameters": { - "id": 6697, + "id": 7017, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 6696, + "id": 7016, "mutability": "mutable", "name": "underlyingError", - "nameLocation": "7802:15:17", + "nameLocation": "8500:15:17", "nodeType": "VariableDeclaration", - "scope": 6698, - "src": "7795:22:17", + "scope": 7018, + "src": "8493:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6661,10 +6806,10 @@ "typeString": "bytes4" }, "typeName": { - "id": 6695, + "id": 7015, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "7795:6:17", + "src": "8493:6:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -6673,352 +6818,373 @@ "visibility": "internal" } ], - "src": "7794:24:17" + "src": "8492:24:17" } }, { - "id": 6700, + "id": 7020, "nodeType": "ErrorDefinition", - "src": "7824:26:17", + "src": "8522:26:17", "nodes": [], "errorSelector": "8bb0a34b", "name": "UnexpectedSuccess", - "nameLocation": "7830:17:17", + "nameLocation": "8528:17:17", "parameters": { - "id": 6699, + "id": 7019, "nodeType": "ParameterList", "parameters": [], - "src": "7847:2:17" + "src": "8545:2:17" } }, { - "id": 6703, + "id": 7023, "nodeType": "ErrorDefinition", - "src": "7928:21:17", + "src": "8626:21:17", "nodes": [], "documentation": { - "id": 6701, + "id": 7021, "nodeType": "StructuredDocumentation", - "src": "7856:67:17", + "src": "8554:67:17", "text": "###############\n ### Factory ###\n ###############" }, "errorSelector": "82b42900", "name": "Unauthorized", - "nameLocation": "7934:12:17", + "nameLocation": "8632:12:17", "parameters": { - "id": 6702, + "id": 7022, "nodeType": "ParameterList", "parameters": [], - "src": "7946:2:17" + "src": "8644:2:17" } }, { - "id": 6705, + "id": 7025, "nodeType": "ErrorDefinition", - "src": "7954:28:17", + "src": "8652:28:17", "nodes": [], "errorSelector": "652122d9", "name": "InvalidContribution", - "nameLocation": "7960:19:17", + "nameLocation": "8658:19:17", "parameters": { - "id": 6704, + "id": 7024, "nodeType": "ParameterList", "parameters": [], - "src": "7979:2:17" + "src": "8677:2:17" } }, { - "id": 6707, + "id": 7027, "nodeType": "ErrorDefinition", - "src": "7987:21:17", + "src": "8685:21:17", "nodes": [], "errorSelector": "c1ab6dc1", "name": "InvalidToken", - "nameLocation": "7993:12:17", + "nameLocation": "8691:12:17", "parameters": { - "id": 6706, + "id": 7026, "nodeType": "ParameterList", "parameters": [], - "src": "8005:2:17" + "src": "8703:2:17" } }, { - "id": 6709, + "id": 7029, "nodeType": "ErrorDefinition", - "src": "8013:22:17", + "src": "8711:22:17", "nodes": [], "errorSelector": "a3932d2d", "name": "MaxFeeTooHigh", - "nameLocation": "8019:13:17", + "nameLocation": "8717:13:17", "parameters": { - "id": 6708, + "id": 7028, "nodeType": "ParameterList", "parameters": [], - "src": "8032:2:17" + "src": "8730:2:17" } }, { - "id": 6711, + "id": 7031, "nodeType": "ErrorDefinition", - "src": "8040:19:17", + "src": "8738:19:17", "nodes": [], "errorSelector": "cd4e6167", "name": "FeeTooHigh", - "nameLocation": "8046:10:17", + "nameLocation": "8744:10:17", "parameters": { - "id": 6710, + "id": 7030, "nodeType": "ParameterList", "parameters": [], - "src": "8056:2:17" + "src": "8754:2:17" } }, { - "id": 6713, + "id": 7033, "nodeType": "ErrorDefinition", - "src": "8064:33:17", + "src": "8762:33:17", "nodes": [], "errorSelector": "8fbc3bd9", "name": "NonPayableInitialization", - "nameLocation": "8070:24:17", + "nameLocation": "8768:24:17", "parameters": { - "id": 6712, + "id": 7032, "nodeType": "ParameterList", "parameters": [], - "src": "8094:2:17" + "src": "8792:2:17" } }, { - "id": 6716, + "id": 7036, "nodeType": "ErrorDefinition", - "src": "8196:33:17", + "src": "8894:33:17", "nodes": [], "documentation": { - "id": 6714, + "id": 7034, "nodeType": "StructuredDocumentation", - "src": "8103:88:17", + "src": "8801:88:17", "text": "######################\n ### ERC20Forwarder ###\n ######################" }, "errorSelector": "ba430d38", "name": "BatchInputLengthMismatch", - "nameLocation": "8202:24:17", + "nameLocation": "8900:24:17", "parameters": { - "id": 6715, + "id": 7035, "nodeType": "ParameterList", "parameters": [], - "src": "8226:2:17" + "src": "8924:2:17" } }, { - "id": 6718, + "id": 7038, "nodeType": "ErrorDefinition", - "src": "8234:24:17", + "src": "8932:24:17", "nodes": [], "errorSelector": "f87d9271", "name": "ExpiredDeadline", - "nameLocation": "8240:15:17", + "nameLocation": "8938:15:17", "parameters": { - "id": 6717, + "id": 7037, "nodeType": "ParameterList", "parameters": [], - "src": "8255:2:17" + "src": "8953:2:17" } }, { - "id": 6720, + "id": 7040, "nodeType": "ErrorDefinition", - "src": "8263:25:17", + "src": "8961:25:17", "nodes": [], "errorSelector": "8baa579f", "name": "InvalidSignature", - "nameLocation": "8269:16:17", + "nameLocation": "8967:16:17", "parameters": { - "id": 6719, + "id": 7039, "nodeType": "ParameterList", "parameters": [], - "src": "8285:2:17" + "src": "8983:2:17" } }, { - "id": 6722, + "id": 7042, "nodeType": "ErrorDefinition", - "src": "8293:27:17", + "src": "8991:27:17", "nodes": [], "errorSelector": "2aab8bd3", "name": "InvalidERC20Bridge", - "nameLocation": "8299:18:17", + "nameLocation": "8997:18:17", "parameters": { - "id": 6721, + "id": 7041, "nodeType": "ParameterList", "parameters": [], - "src": "8317:2:17" + "src": "9015:2:17" } }, { - "id": 6724, + "id": 7044, "nodeType": "ErrorDefinition", - "src": "8325:30:17", + "src": "9023:30:17", "nodes": [], "errorSelector": "f0dd15fd", "name": "RestrictedZeroAddress", - "nameLocation": "8331:21:17", + "nameLocation": "9029:21:17", "parameters": { - "id": 6723, + "id": 7043, "nodeType": "ParameterList", "parameters": [], - "src": "8352:2:17" + "src": "9050:2:17" } }, { - "id": 6727, + "id": 7047, "nodeType": "ErrorDefinition", - "src": "8449:22:17", + "src": "9147:22:17", "nodes": [], "documentation": { - "id": 6725, + "id": 7045, "nodeType": "StructuredDocumentation", - "src": "8361:83:17", + "src": "9059:83:17", "text": "#####################\n ### BondWrapper ###\n #####################" }, "errorSelector": "9acb7e52", "name": "AlreadyClosed", - "nameLocation": "8455:13:17", + "nameLocation": "9153:13:17", "parameters": { - "id": 6726, + "id": 7046, "nodeType": "ParameterList", "parameters": [], - "src": "8468:2:17" + "src": "9166:2:17" } }, { - "id": 6729, + "id": 7049, "nodeType": "ErrorDefinition", - "src": "8476:20:17", + "src": "9174:20:17", "nodes": [], "errorSelector": "3f8e46bc", "name": "BondMatured", - "nameLocation": "8482:11:17", + "nameLocation": "9180:11:17", "parameters": { - "id": 6728, + "id": 7048, "nodeType": "ParameterList", "parameters": [], - "src": "8493:2:17" + "src": "9191:2:17" } }, { - "id": 6731, + "id": 7051, "nodeType": "ErrorDefinition", - "src": "8501:23:17", + "src": "9199:23:17", "nodes": [], "errorSelector": "915eceb1", "name": "BondNotMatured", - "nameLocation": "8507:14:17", + "nameLocation": "9205:14:17", "parameters": { - "id": 6730, + "id": 7050, "nodeType": "ParameterList", "parameters": [], - "src": "8521:2:17" + "src": "9219:2:17" } }, { - "id": 6733, + "id": 7053, "nodeType": "ErrorDefinition", - "src": "8529:26:17", + "src": "9227:26:17", "nodes": [], "errorSelector": "d5481703", "name": "InsufficientPrice", - "nameLocation": "8535:17:17", + "nameLocation": "9233:17:17", "parameters": { - "id": 6732, + "id": 7052, "nodeType": "ParameterList", "parameters": [], - "src": "8552:2:17" + "src": "9250:2:17" } }, { - "id": 6735, + "id": 7055, "nodeType": "ErrorDefinition", - "src": "8560:27:17", + "src": "9258:27:17", "nodes": [], "errorSelector": "4a0dabae", "name": "MintPercentTooHigh", - "nameLocation": "8566:18:17", + "nameLocation": "9264:18:17", "parameters": { - "id": 6734, + "id": 7054, "nodeType": "ParameterList", "parameters": [], - "src": "8584:2:17" + "src": "9282:2:17" } }, { - "id": 6738, + "id": 7058, "nodeType": "ErrorDefinition", - "src": "8665:25:17", + "src": "9363:25:17", "nodes": [], "documentation": { - "id": 6736, + "id": 7056, "nodeType": "StructuredDocumentation", - "src": "8593:67:17", + "src": "9291:67:17", "text": "###############\n ### AssetId ###\n ###############" }, "errorSelector": "b7d09497", "name": "InvalidTimestamp", - "nameLocation": "8671:16:17", + "nameLocation": "9369:16:17", "parameters": { - "id": 6737, + "id": 7057, "nodeType": "ParameterList", "parameters": [], - "src": "8687:2:17" + "src": "9385:2:17" } }, { - "id": 6741, + "id": 7061, "nodeType": "ErrorDefinition", - "src": "8789:39:17", + "src": "9487:39:17", "nodes": [], "documentation": { - "id": 6739, + "id": 7059, "nodeType": "StructuredDocumentation", - "src": "8696:88:17", + "src": "9394:88:17", "text": "######################\n ### FixedPointMath ###\n ######################" }, "errorSelector": "df92cc9d", "name": "FixedPointMath_InvalidExponent", - "nameLocation": "8795:30:17", + "nameLocation": "9493:30:17", "parameters": { - "id": 6740, + "id": 7060, "nodeType": "ParameterList", "parameters": [], - "src": "8825:2:17" + "src": "9523:2:17" } }, { - "id": 6743, + "id": 7063, "nodeType": "ErrorDefinition", - "src": "8833:43:17", + "src": "9531:43:17", "nodes": [], "errorSelector": "ac5f1b8e", "name": "FixedPointMath_NegativeOrZeroInput", - "nameLocation": "8839:34:17", + "nameLocation": "9537:34:17", "parameters": { - "id": 6742, + "id": 7062, "nodeType": "ParameterList", "parameters": [], - "src": "8873:2:17" + "src": "9571:2:17" } }, { - "id": 6745, + "id": 7065, "nodeType": "ErrorDefinition", - "src": "8881:37:17", + "src": "9579:37:17", "nodes": [], "errorSelector": "2c7949f5", "name": "FixedPointMath_NegativeInput", - "nameLocation": "8887:28:17", + "nameLocation": "9585:28:17", "parameters": { - "id": 6744, + "id": 7064, "nodeType": "ParameterList", "parameters": [], - "src": "8915:2:17" + "src": "9613:2:17" + } + }, + { + "id": 7068, + "nodeType": "ErrorDefinition", + "src": "9715:25:17", + "nodes": [], + "documentation": { + "id": 7066, + "nodeType": "StructuredDocumentation", + "src": "9622:88:17", + "text": "######################\n ### YieldSpaceMath ###\n ######################" + }, + "errorSelector": "7ac17d25", + "name": "InvalidTradeSize", + "nameLocation": "9721:16:17", + "parameters": { + "id": 7067, + "nodeType": "ParameterList", + "parameters": [], + "src": "9737:2:17" } } ], @@ -7026,46 +7192,46 @@ "baseContracts": [ { "baseName": { - "id": 6403, + "id": 6712, "name": "IHyperdriveRead", "nameLocations": [ "294:15:17" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6830, + "referencedDeclaration": 7153, "src": "294:15:17" }, - "id": 6404, + "id": 6713, "nodeType": "InheritanceSpecifier", "src": "294:15:17" }, { "baseName": { - "id": 6405, + "id": 6714, "name": "IHyperdriveWrite", "nameLocations": [ "311:16:17" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 6984, + "referencedDeclaration": 7307, "src": "311:16:17" }, - "id": 6406, + "id": 6715, "nodeType": "InheritanceSpecifier", "src": "311:16:17" }, { "baseName": { - "id": 6407, + "id": 6716, "name": "IMultiToken", "nameLocations": [ "329:11:17" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7044, + "referencedDeclaration": 7367, "src": "329:11:17" }, - "id": 6408, + "id": 6717, "nodeType": "InheritanceSpecifier", "src": "329:11:17" } @@ -7075,69 +7241,71 @@ "contractKind": "interface", "fullyImplemented": false, "linearizedBaseContracts": [ - 6746, - 7044, - 7052, - 6984, - 7234, - 6830, - 7122 + 7069, + 7367, + 7375, + 7307, + 7557, + 7153, + 7445 ], "name": "IHyperdrive", "nameLocation": "279:11:17", - "scope": 6747, + "scope": 7070, "usedErrors": [ - 6634, - 6636, - 6638, - 6640, - 6642, - 6644, - 6646, - 6648, - 6650, - 6652, - 6654, - 6656, - 6658, - 6660, - 6662, - 6664, - 6666, - 6668, - 6670, - 6672, - 6674, - 6676, - 6678, - 6680, - 6682, - 6684, - 6686, - 6689, - 6694, - 6698, - 6700, - 6703, - 6705, - 6707, - 6709, - 6711, - 6713, - 6716, - 6718, - 6720, - 6722, - 6724, - 6727, - 6729, - 6731, - 6733, - 6735, - 6738, - 6741, - 6743, - 6745 + 6952, + 6954, + 6956, + 6958, + 6960, + 6962, + 6964, + 6966, + 6968, + 6970, + 6972, + 6974, + 6976, + 6978, + 6980, + 6982, + 6984, + 6986, + 6988, + 6990, + 6992, + 6994, + 6996, + 6998, + 7000, + 7002, + 7004, + 7006, + 7009, + 7014, + 7018, + 7020, + 7023, + 7025, + 7027, + 7029, + 7031, + 7033, + 7036, + 7038, + 7040, + 7042, + 7044, + 7047, + 7049, + 7051, + 7053, + 7055, + 7058, + 7061, + 7063, + 7065, + 7068 ] } ], diff --git a/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json b/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json index a6050fdb89..f12bc0a875 100644 --- a/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json +++ b/packages/hyperdrive/src/abis/MockERC4626.sol/MockERC4626.json @@ -741,16 +741,16 @@ } ], "bytecode": { - "object": "0x6101006040523480156200001257600080fd5b5060405162001c0538038062001c05833981016040819052620000359162000259565b8383838181846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009f9190620002eb565b6000620000ad8482620003a6565b506001620000bc8382620003a6565b5060ff81166080524660a052620000d2620000f8565b60c0525050506001600160a01b0390921660e052505060065550504260075550620004f0565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200012c919062000472565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bc57600080fd5b81516001600160401b0380821115620001d957620001d962000194565b604051601f8301601f19908116603f0116810190828211818310171562000204576200020462000194565b816040528381526020925086838588010111156200022157600080fd5b600091505b8382101562000245578582018301518183018401529082019062000226565b600093810190920192909252949350505050565b600080600080608085870312156200027057600080fd5b84516001600160a01b03811681146200028857600080fd5b60208601519094506001600160401b0380821115620002a657600080fd5b620002b488838901620001aa565b94506040870151915080821115620002cb57600080fd5b50620002da87828801620001aa565b606096909601519497939650505050565b600060208284031215620002fe57600080fd5b815160ff811681146200031057600080fd5b9392505050565b600181811c908216806200032c57607f821691505b6020821081036200034d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a157600081815260208120601f850160051c810160208610156200037c5750805b601f850160051c820191505b818110156200039d5782815560010162000388565b5050505b505050565b81516001600160401b03811115620003c257620003c262000194565b620003da81620003d3845462000317565b8462000353565b602080601f831160018114620004125760008415620003f95750858301515b600019600386901b1c1916600185901b1785556200039d565b600085815260208120601f198616915b82811015620004435788860151825594840194600190910190840162000422565b5085821015620004625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620004828162000317565b600182811680156200049d5760018114620004b357620004e4565b60ff1984168752821515830287019450620004e4565b8760005260208060002060005b85811015620004db5781548a820152908401908201620004c0565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516116aa6200055b600039600081816102cf015281816104b201528181610b9a01528181610c5f01528181610ddc01528181610e7401528181610fc601526111080152600061079d0152600061076d0152600061027901526116aa6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba087652116100a2578063d505accf11610071578063d505accf14610419578063d905777e1461042c578063dd62ed3e14610455578063ef8b30f71461048057600080fd5b8063ba087652146103e0578063c63d75b614610309578063c6e6f592146103f3578063ce96cb771461040657600080fd5b806395d89b41116100de57806395d89b411461039f578063a9059cbb146103a7578063b3d7f6b9146103ba578063b460af94146103cd57600080fd5b806370a082311461034c5780637ecebe001461036c57806394bf804d1461038c57600080fd5b8063313ce5671161017c578063402d267d1161014b578063402d267d146103095780634cdad5061461031e578063679aefce146103315780636e553f651461033957600080fd5b8063313ce5671461027457806334fcf437146102ad5780633644e515146102c257806338d52e0f146102ca57600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026157600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610493565b6040519081526020015b60405180910390f35b610202610534565b6040516101f1919061131d565b6101e761021d36600461136b565b6105c2565b6102356102303660046113a0565b6105ef565b60405190151581526020016101f1565b6101e761025336600461136b565b61065c565b6101e760025481565b61023561026f3660046113ca565b61067c565b61029b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f1565b6102c06102bb36600461136b565b61075c565b005b6101e7610769565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f1565b6101e7610317366004611406565b5060001990565b6101e761032c36600461136b565b6107bf565b6006546101e7565b6101e7610347366004611421565b6107ca565b6101e761035a366004611406565b60036020526000908152604090205481565b6101e761037a366004611406565b60056020526000908152604090205481565b6101e761039a366004611421565b6107de565b6102026107f2565b6102356103b53660046113a0565b6107ff565b6101e76103c836600461136b565b610865565b6101e76103db36600461144d565b610884565b6101e76103ee36600461144d565b6108a1565b6101e761040136600461136b565b6108b6565b6101e7610414366004611406565b6108d6565b6102c0610427366004611489565b6108f8565b6101e761043a366004611406565b6001600160a01b031660009081526003602052604090205490565b6101e76104633660046114fc565b600460209081526000928352604080842090915290825290205481565b6101e761048e36600461136b565b610b41565b600061049d610b4c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190611526565b61052f9190611555565b905090565b6000805461054190611568565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90611568565b80156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505081565b60025460009080156105e6576105e16105d9610493565b849083610c19565b6105e8565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061064a9086815260200190565b60405180910390a35060015b92915050565b60025460009080156105e6576105e181610674610493565b859190610c37565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146106d8576106b383826115a2565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107009084906115a2565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611655833981519152906107499087815260200190565b60405180910390a3506001949350505050565b610764610c5d565b600655565b60007f0000000000000000000000000000000000000000000000000000000000000000461461079a5761052f610cea565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610656826105c2565b60006107d4610c5d565b6105e88383610d84565b60006107e8610c5d565b6105e88383610e5a565b6001805461054190611568565b336000908152600360205260408120805483919083906108209084906115a2565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206116558339815191529061064a9086815260200190565b60025460009080156105e6576105e161087c610493565b849083610c37565b600061088e610c5d565b610899848484610ee9565b949350505050565b60006108ab610c5d565b610899848484610fed565b60025460009080156105e6576105e1816108ce610493565b859190610c19565b6001600160a01b038116600090815260036020526040812054610656906105c2565b4284101561094d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b60006001610959610769565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a9b5750876001600160a01b0316816001600160a01b0316145b610ad85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610944565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000610656826108b6565b600080610b6b6301e1338060075442610b6591906115a2565b9061112f565b9050610c13610b858260065461114490919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d9190611526565b90611144565b91505090565b6000826000190484118302158202610c3057600080fd5b5091020490565b6000826000190484118302158202610c4e57600080fd5b50910281810615159190040190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d68610c94610b4c565b6040518263ffffffff1660e01b8152600401610cb291815260200190565b600060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b5050426007555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610d1c91906115b5565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000610d8f83610b41565b905080600003610dcf5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610944565b610e046001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611159565b610e0e82826111e3565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610656565b6000610e6583610865565b9050610e9c6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611159565b610ea682846111e3565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610e4d565b6000610ef48461065c565b9050336001600160a01b03831614610f64576001600160a01b03821660009081526004602090815260408083203384529091529020546000198114610f6257610f3d82826115a2565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b610f6e828261123d565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848661129f565b6000336001600160a01b0383161461105d576001600160a01b0382166000908152600460209081526040808320338452909152902054600019811461105b5761103685826115a2565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b611066846107bf565b9050806000036110a65760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610944565b6110b0828561123d565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361129f565b60006105e883670de0b6b3a764000084610c19565b60006105e88383670de0b6b3a7640000610c19565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806111dc5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610944565b5050505050565b80600260008282546111f59190611555565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061165583398151915291015b60405180910390a35050565b6001600160a01b038216600090815260036020526040812080548392906112659084906115a2565b90915550506002805482900390556040518181526000906001600160a01b0384169060008051602061165583398151915290602001611231565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806113175760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610944565b50505050565b600060208083528351808285015260005b8181101561134a5785810183015185820160400152820161132e565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561137d57600080fd5b5035919050565b80356001600160a01b038116811461139b57600080fd5b919050565b600080604083850312156113b357600080fd5b6113bc83611384565b946020939093013593505050565b6000806000606084860312156113df57600080fd5b6113e884611384565b92506113f660208501611384565b9150604084013590509250925092565b60006020828403121561141857600080fd5b6105e882611384565b6000806040838503121561143457600080fd5b8235915061144460208401611384565b90509250929050565b60008060006060848603121561146257600080fd5b8335925061147260208501611384565b915061148060408501611384565b90509250925092565b600080600080600080600060e0888a0312156114a457600080fd5b6114ad88611384565b96506114bb60208901611384565b95506040880135945060608801359350608088013560ff811681146114df57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561150f57600080fd5b61151883611384565b915061144460208401611384565b60006020828403121561153857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106565761065661153f565b600181811c9082168061157c57607f821691505b60208210810361159c57634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106565761065661153f565b600080835481600182811c9150808316806115d157607f831692505b602080841082036115f057634e487b7160e01b86526022600452602486fd5b818015611604576001811461161957611646565b60ff1986168952841515850289019650611646565b60008a81526020902060005b8681101561163e5781548b820152908501908301611625565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ac6ee681d7e95d2731bac13ac6107688d65323531977fd552fc72d06e8b943ac64736f6c63430008130033", - "sourceMap": "824:2075:43:-:0;;;965:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1125:6;1135:5;1142:7;1290:5:87;1297:7;1306:6;-1:-1:-1;;;;;1306:15:87;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2094:4:88;:12;2101:5;2094:4;:12;:::i;:::-;-1:-1:-1;2116:6:88;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:88;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;;;;;;;;1335:14:87;;::::1;;::::0;-1:-1:-1;;1161:5:43::1;:20:::0;-1:-1:-1;;1206:15:43::1;1191:12;:30:::0;-1:-1:-1;824:2075:43;;5510:446:88;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5785:25:156;;;;5826:18;;5819:34;;;;5833:14:88;5869:18:156;;;5862:34;5869:13:88;5912:18:156;;;5905:34;5912:4:88;5955:19:156;;;5948:61;5757:19;;5640:295:88;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:156:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:156;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:156;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:156:o;991:814::-;1131:6;1139;1147;1155;1208:3;1196:9;1187:7;1183:23;1179:33;1176:53;;;1225:1;1222;1215:12;1176:53;1251:16;;-1:-1:-1;;;;;1296:31:156;;1286:42;;1276:70;;1342:1;1339;1332:12;1276:70;1414:2;1399:18;;1393:25;1365:5;;-1:-1:-1;;;;;;1467:14:156;;;1464:34;;;1494:1;1491;1484:12;1464:34;1517:61;1570:7;1561:6;1550:9;1546:22;1517:61;:::i;:::-;1507:71;;1624:2;1613:9;1609:18;1603:25;1587:41;;1653:2;1643:8;1640:16;1637:36;;;1669:1;1666;1659:12;1637:36;;1692:63;1747:7;1736:8;1725:9;1721:24;1692:63;:::i;:::-;1795:2;1780:18;;;;1774:25;991:814;;;;-1:-1:-1;;;;991:814:156:o;1810:273::-;1878:6;1931:2;1919:9;1910:7;1906:23;1902:32;1899:52;;;1947:1;1944;1937:12;1899:52;1979:9;1973:16;2029:4;2022:5;2018:16;2011:5;2008:27;1998:55;;2049:1;2046;2039:12;1998:55;2072:5;1810:273;-1:-1:-1;;;1810:273:156:o;2088:380::-;2167:1;2163:12;;;;2210;;;2231:61;;2285:4;2277:6;2273:17;2263:27;;2231:61;2338:2;2330:6;2327:14;2307:18;2304:38;2301:161;;2384:10;2379:3;2375:20;2372:1;2365:31;2419:4;2416:1;2409:15;2447:4;2444:1;2437:15;2301:161;;2088:380;;;:::o;2599:545::-;2701:2;2696:3;2693:11;2690:448;;;2737:1;2762:5;2758:2;2751:17;2807:4;2803:2;2793:19;2877:2;2865:10;2861:19;2858:1;2854:27;2848:4;2844:38;2913:4;2901:10;2898:20;2895:47;;;-1:-1:-1;2936:4:156;2895:47;2991:2;2986:3;2982:12;2979:1;2975:20;2969:4;2965:31;2955:41;;3046:82;3064:2;3057:5;3054:13;3046:82;;;3109:17;;;3090:1;3079:13;3046:82;;;3050:3;;;2690:448;2599:545;;;:::o;3320:1352::-;3440:10;;-1:-1:-1;;;;;3462:30:156;;3459:56;;;3495:18;;:::i;:::-;3524:97;3614:6;3574:38;3606:4;3600:11;3574:38;:::i;:::-;3568:4;3524:97;:::i;:::-;3676:4;;3740:2;3729:14;;3757:1;3752:663;;;;4459:1;4476:6;4473:89;;;-1:-1:-1;4528:19:156;;;4522:26;4473:89;-1:-1:-1;;3277:1:156;3273:11;;;3269:24;3265:29;3255:40;3301:1;3297:11;;;3252:57;4575:81;;3722:944;;3752:663;2546:1;2539:14;;;2583:4;2570:18;;-1:-1:-1;;3788:20:156;;;3906:236;3920:7;3917:1;3914:14;3906:236;;;4009:19;;;4003:26;3988:42;;4101:27;;;;4069:1;4057:14;;;;3936:19;;3906:236;;;3910:3;4170:6;4161:7;4158:19;4155:201;;;4231:19;;;4225:26;-1:-1:-1;;4314:1:156;4310:14;;;4326:3;4306:24;4302:37;4298:42;4283:58;4268:74;;4155:201;-1:-1:-1;;;;;4402:1:156;4386:14;;;4382:22;4369:36;;-1:-1:-1;3320:1352:156:o;4677:844::-;4807:3;4836:1;4869:6;4863:13;4899:36;4925:9;4899:36;:::i;:::-;4954:1;4971:18;;;4998:133;;;;5145:1;5140:356;;;;4964:532;;4998:133;-1:-1:-1;;5031:24:156;;5019:37;;5104:14;;5097:22;5085:35;;5076:45;;;-1:-1:-1;4998:133:156;;5140:356;5171:6;5168:1;5161:17;5201:4;5246:2;5243:1;5233:16;5271:1;5285:165;5299:6;5296:1;5293:13;5285:165;;;5377:14;;5364:11;;;5357:35;5420:16;;;;5314:10;;5285:165;;;5289:3;;;5479:6;5474:3;5470:16;5463:23;;4964:532;-1:-1:-1;5512:3:156;;4677:844;-1:-1:-1;;;;;;4677:844:156:o;5526:489::-;824:2075:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "object": "0x6101006040523480156200001257600080fd5b5060405162001c0138038062001c01833981016040819052620000359162000259565b8383838181846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009f9190620002eb565b6000620000ad8482620003a6565b506001620000bc8382620003a6565b5060ff81166080524660a052620000d2620000f8565b60c0525050506001600160a01b0390921660e052505060065550504260075550620004f0565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516200012c919062000472565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bc57600080fd5b81516001600160401b0380821115620001d957620001d962000194565b604051601f8301601f19908116603f0116810190828211818310171562000204576200020462000194565b816040528381526020925086838588010111156200022157600080fd5b600091505b8382101562000245578582018301518183018401529082019062000226565b600093810190920192909252949350505050565b600080600080608085870312156200027057600080fd5b84516001600160a01b03811681146200028857600080fd5b60208601519094506001600160401b0380821115620002a657600080fd5b620002b488838901620001aa565b94506040870151915080821115620002cb57600080fd5b50620002da87828801620001aa565b606096909601519497939650505050565b600060208284031215620002fe57600080fd5b815160ff811681146200031057600080fd5b9392505050565b600181811c908216806200032c57607f821691505b6020821081036200034d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a157600081815260208120601f850160051c810160208610156200037c5750805b601f850160051c820191505b818110156200039d5782815560010162000388565b5050505b505050565b81516001600160401b03811115620003c257620003c262000194565b620003da81620003d3845462000317565b8462000353565b602080601f831160018114620004125760008415620003f95750858301515b600019600386901b1c1916600185901b1785556200039d565b600085815260208120601f198616915b82811015620004435788860151825594840194600190910190840162000422565b5085821015620004625787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620004828162000317565b600182811680156200049d5760018114620004b357620004e4565b60ff1984168752821515830287019450620004e4565b8760005260208060002060005b85811015620004db5781548a820152908401908201620004c0565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516116a66200055b600039600081816102cf015281816104b201528181610b9c01528181610c5b01528181610dd801528181610e7001528181610fc201526111040152600061079d0152600061076d0152600061027901526116a66000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba087652116100a2578063d505accf11610071578063d505accf14610419578063d905777e1461042c578063dd62ed3e14610455578063ef8b30f71461048057600080fd5b8063ba087652146103e0578063c63d75b614610309578063c6e6f592146103f3578063ce96cb771461040657600080fd5b806395d89b41116100de57806395d89b411461039f578063a9059cbb146103a7578063b3d7f6b9146103ba578063b460af94146103cd57600080fd5b806370a082311461034c5780637ecebe001461036c57806394bf804d1461038c57600080fd5b8063313ce5671161017c578063402d267d1161014b578063402d267d146103095780634cdad5061461031e578063679aefce146103315780636e553f651461033957600080fd5b8063313ce5671461027457806334fcf437146102ad5780633644e515146102c257806338d52e0f146102ca57600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026157600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610493565b6040519081526020015b60405180910390f35b610202610534565b6040516101f19190611319565b6101e761021d366004611367565b6105c2565b61023561023036600461139c565b6105ef565b60405190151581526020016101f1565b6101e7610253366004611367565b61065c565b6101e760025481565b61023561026f3660046113c6565b61067c565b61029b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f1565b6102c06102bb366004611367565b61075c565b005b6101e7610769565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f1565b6101e7610317366004611402565b5060001990565b6101e761032c366004611367565b6107bf565b6006546101e7565b6101e761034736600461141d565b6107ca565b6101e761035a366004611402565b60036020526000908152604090205481565b6101e761037a366004611402565b60056020526000908152604090205481565b6101e761039a36600461141d565b6107de565b6102026107f2565b6102356103b536600461139c565b6107ff565b6101e76103c8366004611367565b610865565b6101e76103db366004611449565b610884565b6101e76103ee366004611449565b6108a1565b6101e7610401366004611367565b6108b6565b6101e7610414366004611402565b6108d6565b6102c0610427366004611485565b6108f8565b6101e761043a366004611402565b6001600160a01b031660009081526003602052604090205490565b6101e76104633660046114f8565b600460209081526000928352604080842090915290825290205481565b6101e761048e366004611367565b610b41565b600061049d610b4c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190611522565b61052f9190611551565b905090565b6000805461054190611564565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90611564565b80156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505081565b60025460009080156105e6576105e16105d9610493565b849083610c15565b6105e8565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061064a9086815260200190565b60405180910390a35060015b92915050565b60025460009080156105e6576105e181610674610493565b859190610c33565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146106d8576106b3838261159e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061070090849061159e565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611651833981519152906107499087815260200190565b60405180910390a3506001949350505050565b610764610c59565b600655565b60007f0000000000000000000000000000000000000000000000000000000000000000461461079a5761052f610ce6565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610656826105c2565b60006107d4610c59565b6105e88383610d80565b60006107e8610c59565b6105e88383610e56565b6001805461054190611564565b3360009081526003602052604081208054839190839061082090849061159e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206116518339815191529061064a9086815260200190565b60025460009080156105e6576105e161087c610493565b849083610c33565b600061088e610c59565b610899848484610ee5565b949350505050565b60006108ab610c59565b610899848484610fe9565b60025460009080156105e6576105e1816108ce610493565b859190610c15565b6001600160a01b038116600090815260036020526040812054610656906105c2565b4284101561094d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b60006001610959610769565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a9b5750876001600160a01b0316816001600160a01b0316145b610ad85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610944565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000610656826108b6565b600080610b6b6301e1338060075442610b65919061159e565b9061112b565b905060006105e8610b878360065461114090919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190611522565b90611140565b6000826000190484118302158202610c2c57600080fd5b5091020490565b6000826000190484118302158202610c4a57600080fd5b50910281810615159190040190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d68610c90610b4c565b6040518263ffffffff1660e01b8152600401610cae91815260200190565b600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b5050426007555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610d1891906115b1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000610d8b83610b41565b905080600003610dcb5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610944565b610e006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611155565b610e0a82826111df565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610656565b6000610e6183610865565b9050610e986001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611155565b610ea282846111df565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610e49565b6000610ef08461065c565b9050336001600160a01b03831614610f60576001600160a01b03821660009081526004602090815260408083203384529091529020546000198114610f5e57610f39828261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b610f6a8282611239565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848661129b565b6000336001600160a01b03831614611059576001600160a01b0382166000908152600460209081526040808320338452909152902054600019811461105757611032858261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b611062846107bf565b9050806000036110a25760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610944565b6110ac8285611239565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361129b565b60006105e883670de0b6b3a764000084610c15565b60006105e88383670de0b6b3a7640000610c15565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806111d85760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610944565b5050505050565b80600260008282546111f19190611551565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061165183398151915291015b60405180910390a35050565b6001600160a01b0382166000908152600360205260408120805483929061126190849061159e565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206116518339815191529060200161122d565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806113135760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610944565b50505050565b600060208083528351808285015260005b818110156113465785810183015185820160400152820161132a565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561137957600080fd5b5035919050565b80356001600160a01b038116811461139757600080fd5b919050565b600080604083850312156113af57600080fd5b6113b883611380565b946020939093013593505050565b6000806000606084860312156113db57600080fd5b6113e484611380565b92506113f260208501611380565b9150604084013590509250925092565b60006020828403121561141457600080fd5b6105e882611380565b6000806040838503121561143057600080fd5b8235915061144060208401611380565b90509250929050565b60008060006060848603121561145e57600080fd5b8335925061146e60208501611380565b915061147c60408501611380565b90509250925092565b600080600080600080600060e0888a0312156114a057600080fd5b6114a988611380565b96506114b760208901611380565b95506040880135945060608801359350608088013560ff811681146114db57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561150b57600080fd5b61151483611380565b915061144060208401611380565b60006020828403121561153457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106565761065661153b565b600181811c9082168061157857607f821691505b60208210810361159857634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106565761065661153b565b600080835481600182811c9150808316806115cd57607f831692505b602080841082036115ec57634e487b7160e01b86526022600452602486fd5b818015611600576001811461161557611642565b60ff1986168952841515850289019650611642565b60008a81526020902060005b8681101561163a5781548b820152908501908301611621565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220505c85b218de4b19620ab4c6166c02ffd48fcf94db668dd51a4d412f7aab075c64736f6c63430008130033", + "sourceMap": "824:2120:39:-:0;;;965:263;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1125:6;1135:5;1142:7;1290:5:86;1297:7;1306:6;-1:-1:-1;;;;;1306:15:86;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2094:4:87;:12;2101:5;2094:4;:12;:::i;:::-;-1:-1:-1;2116:6:87;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:87;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;;;;;;;;1335:14:86;;::::1;;::::0;-1:-1:-1;;1161:5:39::1;:20:::0;-1:-1:-1;;1206:15:39::1;1191:12;:30:::0;-1:-1:-1;824:2120:39;;5510:446:87;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5785:25:158;;;;5826:18;;5819:34;;;;5833:14:87;5869:18:158;;;5862:34;5869:13:87;5912:18:158;;;5905:34;5912:4:87;5955:19:158;;;5948:61;5757:19;;5640:295:87;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:158:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:158;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:158;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:158:o;991:814::-;1131:6;1139;1147;1155;1208:3;1196:9;1187:7;1183:23;1179:33;1176:53;;;1225:1;1222;1215:12;1176:53;1251:16;;-1:-1:-1;;;;;1296:31:158;;1286:42;;1276:70;;1342:1;1339;1332:12;1276:70;1414:2;1399:18;;1393:25;1365:5;;-1:-1:-1;;;;;;1467:14:158;;;1464:34;;;1494:1;1491;1484:12;1464:34;1517:61;1570:7;1561:6;1550:9;1546:22;1517:61;:::i;:::-;1507:71;;1624:2;1613:9;1609:18;1603:25;1587:41;;1653:2;1643:8;1640:16;1637:36;;;1669:1;1666;1659:12;1637:36;;1692:63;1747:7;1736:8;1725:9;1721:24;1692:63;:::i;:::-;1795:2;1780:18;;;;1774:25;991:814;;;;-1:-1:-1;;;;991:814:158:o;1810:273::-;1878:6;1931:2;1919:9;1910:7;1906:23;1902:32;1899:52;;;1947:1;1944;1937:12;1899:52;1979:9;1973:16;2029:4;2022:5;2018:16;2011:5;2008:27;1998:55;;2049:1;2046;2039:12;1998:55;2072:5;1810:273;-1:-1:-1;;;1810:273:158:o;2088:380::-;2167:1;2163:12;;;;2210;;;2231:61;;2285:4;2277:6;2273:17;2263:27;;2231:61;2338:2;2330:6;2327:14;2307:18;2304:38;2301:161;;2384:10;2379:3;2375:20;2372:1;2365:31;2419:4;2416:1;2409:15;2447:4;2444:1;2437:15;2301:161;;2088:380;;;:::o;2599:545::-;2701:2;2696:3;2693:11;2690:448;;;2737:1;2762:5;2758:2;2751:17;2807:4;2803:2;2793:19;2877:2;2865:10;2861:19;2858:1;2854:27;2848:4;2844:38;2913:4;2901:10;2898:20;2895:47;;;-1:-1:-1;2936:4:158;2895:47;2991:2;2986:3;2982:12;2979:1;2975:20;2969:4;2965:31;2955:41;;3046:82;3064:2;3057:5;3054:13;3046:82;;;3109:17;;;3090:1;3079:13;3046:82;;;3050:3;;;2690:448;2599:545;;;:::o;3320:1352::-;3440:10;;-1:-1:-1;;;;;3462:30:158;;3459:56;;;3495:18;;:::i;:::-;3524:97;3614:6;3574:38;3606:4;3600:11;3574:38;:::i;:::-;3568:4;3524:97;:::i;:::-;3676:4;;3740:2;3729:14;;3757:1;3752:663;;;;4459:1;4476:6;4473:89;;;-1:-1:-1;4528:19:158;;;4522:26;4473:89;-1:-1:-1;;3277:1:158;3273:11;;;3269:24;3265:29;3255:40;3301:1;3297:11;;;3252:57;4575:81;;3722:944;;3752:663;2546:1;2539:14;;;2583:4;2570:18;;-1:-1:-1;;3788:20:158;;;3906:236;3920:7;3917:1;3914:14;3906:236;;;4009:19;;;4003:26;3988:42;;4101:27;;;;4069:1;4057:14;;;;3936:19;;3906:236;;;3910:3;4170:6;4161:7;4158:19;4155:201;;;4231:19;;;4225:26;-1:-1:-1;;4314:1:158;4310:14;;;4326:3;4306:24;4302:37;4298:42;4283:58;4268:74;;4155:201;-1:-1:-1;;;;;4402:1:158;4386:14;;;4382:22;4369:36;;-1:-1:-1;3320:1352:158:o;4677:844::-;4807:3;4836:1;4869:6;4863:13;4899:36;4925:9;4899:36;:::i;:::-;4954:1;4971:18;;;4998:133;;;;5145:1;5140:356;;;;4964:532;;4998:133;-1:-1:-1;;5031:24:158;;5019:37;;5104:14;;5097:22;5085:35;;5076:45;;;-1:-1:-1;4998:133:158;;5140:356;5171:6;5168:1;5161:17;5201:4;5246:2;5243:1;5233:16;5271:1;5285:165;5299:6;5296:1;5293:13;5285:165;;;5377:14;;5364:11;;;5357:35;5420:16;;;;5314:10;;5285:165;;;5289:3;;;5479:6;5474:3;5470:16;5463:23;;4964:532;-1:-1:-1;5512:3:158;;4677:844;-1:-1:-1;;;;;;4677:844:158:o;5526:489::-;824:2120:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba087652116100a2578063d505accf11610071578063d505accf14610419578063d905777e1461042c578063dd62ed3e14610455578063ef8b30f71461048057600080fd5b8063ba087652146103e0578063c63d75b614610309578063c6e6f592146103f3578063ce96cb771461040657600080fd5b806395d89b41116100de57806395d89b411461039f578063a9059cbb146103a7578063b3d7f6b9146103ba578063b460af94146103cd57600080fd5b806370a082311461034c5780637ecebe001461036c57806394bf804d1461038c57600080fd5b8063313ce5671161017c578063402d267d1161014b578063402d267d146103095780634cdad5061461031e578063679aefce146103315780636e553f651461033957600080fd5b8063313ce5671461027457806334fcf437146102ad5780633644e515146102c257806338d52e0f146102ca57600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026157600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610493565b6040519081526020015b60405180910390f35b610202610534565b6040516101f1919061131d565b6101e761021d36600461136b565b6105c2565b6102356102303660046113a0565b6105ef565b60405190151581526020016101f1565b6101e761025336600461136b565b61065c565b6101e760025481565b61023561026f3660046113ca565b61067c565b61029b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f1565b6102c06102bb36600461136b565b61075c565b005b6101e7610769565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f1565b6101e7610317366004611406565b5060001990565b6101e761032c36600461136b565b6107bf565b6006546101e7565b6101e7610347366004611421565b6107ca565b6101e761035a366004611406565b60036020526000908152604090205481565b6101e761037a366004611406565b60056020526000908152604090205481565b6101e761039a366004611421565b6107de565b6102026107f2565b6102356103b53660046113a0565b6107ff565b6101e76103c836600461136b565b610865565b6101e76103db36600461144d565b610884565b6101e76103ee36600461144d565b6108a1565b6101e761040136600461136b565b6108b6565b6101e7610414366004611406565b6108d6565b6102c0610427366004611489565b6108f8565b6101e761043a366004611406565b6001600160a01b031660009081526003602052604090205490565b6101e76104633660046114fc565b600460209081526000928352604080842090915290825290205481565b6101e761048e36600461136b565b610b41565b600061049d610b4c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190611526565b61052f9190611555565b905090565b6000805461054190611568565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90611568565b80156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505081565b60025460009080156105e6576105e16105d9610493565b849083610c19565b6105e8565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061064a9086815260200190565b60405180910390a35060015b92915050565b60025460009080156105e6576105e181610674610493565b859190610c37565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146106d8576106b383826115a2565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906107009084906115a2565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611655833981519152906107499087815260200190565b60405180910390a3506001949350505050565b610764610c5d565b600655565b60007f0000000000000000000000000000000000000000000000000000000000000000461461079a5761052f610cea565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610656826105c2565b60006107d4610c5d565b6105e88383610d84565b60006107e8610c5d565b6105e88383610e5a565b6001805461054190611568565b336000908152600360205260408120805483919083906108209084906115a2565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206116558339815191529061064a9086815260200190565b60025460009080156105e6576105e161087c610493565b849083610c37565b600061088e610c5d565b610899848484610ee9565b949350505050565b60006108ab610c5d565b610899848484610fed565b60025460009080156105e6576105e1816108ce610493565b859190610c19565b6001600160a01b038116600090815260036020526040812054610656906105c2565b4284101561094d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b60006001610959610769565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a9b5750876001600160a01b0316816001600160a01b0316145b610ad85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610944565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000610656826108b6565b600080610b6b6301e1338060075442610b6591906115a2565b9061112f565b9050610c13610b858260065461114490919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d9190611526565b90611144565b91505090565b6000826000190484118302158202610c3057600080fd5b5091020490565b6000826000190484118302158202610c4e57600080fd5b50910281810615159190040190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d68610c94610b4c565b6040518263ffffffff1660e01b8152600401610cb291815260200190565b600060405180830381600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b5050426007555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610d1c91906115b5565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000610d8f83610b41565b905080600003610dcf5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610944565b610e046001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611159565b610e0e82826111e3565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610656565b6000610e6583610865565b9050610e9c6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611159565b610ea682846111e3565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610e4d565b6000610ef48461065c565b9050336001600160a01b03831614610f64576001600160a01b03821660009081526004602090815260408083203384529091529020546000198114610f6257610f3d82826115a2565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b610f6e828261123d565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848661129f565b6000336001600160a01b0383161461105d576001600160a01b0382166000908152600460209081526040808320338452909152902054600019811461105b5761103685826115a2565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b611066846107bf565b9050806000036110a65760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610944565b6110b0828561123d565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361129f565b60006105e883670de0b6b3a764000084610c19565b60006105e88383670de0b6b3a7640000610c19565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806111dc5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610944565b5050505050565b80600260008282546111f59190611555565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061165583398151915291015b60405180910390a35050565b6001600160a01b038216600090815260036020526040812080548392906112659084906115a2565b90915550506002805482900390556040518181526000906001600160a01b0384169060008051602061165583398151915290602001611231565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806113175760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610944565b50505050565b600060208083528351808285015260005b8181101561134a5785810183015185820160400152820161132e565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561137d57600080fd5b5035919050565b80356001600160a01b038116811461139b57600080fd5b919050565b600080604083850312156113b357600080fd5b6113bc83611384565b946020939093013593505050565b6000806000606084860312156113df57600080fd5b6113e884611384565b92506113f660208501611384565b9150604084013590509250925092565b60006020828403121561141857600080fd5b6105e882611384565b6000806040838503121561143457600080fd5b8235915061144460208401611384565b90509250929050565b60008060006060848603121561146257600080fd5b8335925061147260208501611384565b915061148060408501611384565b90509250925092565b600080600080600080600060e0888a0312156114a457600080fd5b6114ad88611384565b96506114bb60208901611384565b95506040880135945060608801359350608088013560ff811681146114df57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561150f57600080fd5b61151883611384565b915061144460208401611384565b60006020828403121561153857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106565761065661153f565b600181811c9082168061157c57607f821691505b60208210810361159c57634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106565761065661153f565b600080835481600182811c9150808316806115d157607f831692505b602080841082036115f057634e487b7160e01b86526022600452602486fd5b818015611604576001811461161957611646565b60ff1986168952841515850289019650611646565b60008a81526020902060005b8681101561163e5781548b820152908501908301611625565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ac6ee681d7e95d2731bac13ac6107688d65323531977fd552fc72d06e8b943ac64736f6c63430008130033", - "sourceMap": "824:2075:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:140;;;:::i;:::-;;;160:25:156;;;148:2;133:18;2079:140:43;;;;;;;;1031:18:88;;;:::i;:::-;;;;;;;:::i;4463:257:87:-;;;;;;:::i;:::-;;:::i;2461:211:88:-;;;;;;:::i;:::-;;:::i;:::-;;;1536:14:156;;1529:22;1511:41;;1499:2;1484:18;2461:211:88;1371:187:156;5114:255:87;;;;;;:::i;:::-;;:::i;1304:26:88:-;;;;;;3057:592;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;2068:4:156;2056:17;;;2038:36;;2026:2;2011:18;1083:31:88;1896:184:156;2243:92:43;;;;;;:::i;:::-;;:::i;:::-;;5327:177:88;;;:::i;1149:28:87:-;;;;;;;;-1:-1:-1;;;;;2446:32:156;;;2428:51;;2416:2;2401:18;1149:28:87;2267:218:156;5696:108:87;;;;;;:::i;:::-;-1:-1:-1;;;5780:17:87;5696:108;5375:124;;;;;;:::i;:::-;;:::i;2341:80:43:-;2409:5;;2341:80;;1257:185;;;;;;:::i;:::-;;:::i;1337:44:88:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1751:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1448:179:43;;;;;;:::i;:::-;;:::i;1056:20:88:-;;;:::i;2678:373::-;;;;;;:::i;:::-;;:::i;4857:251:87:-;;;;;;:::i;:::-;;:::i;1633:219:43:-;;;;;;:::i;:::-;;:::i;1858:215::-;;;;;;:::i;:::-;;:::i;4200:257:87:-;;;;;;:::i;:::-;;:::i;5921:131::-;;;;;;:::i;:::-;;:::i;3838:1483:88:-;;;;;;:::i;:::-;;:::i;6058:112:87:-;;;;;;:::i;:::-;-1:-1:-1;;;;;6147:16:87;6121:7;6147:16;;;:9;:16;;;;;;;6058:112;1388:64:88;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4726:125:87;;;;;;:::i;:::-;;:::i;2079:140:43:-;2132:7;2191:21;:19;:21::i;:::-;2158:30;;-1:-1:-1;;;2158:30:43;;2182:4;2158:30;;;2428:51:156;2158:5:43;-1:-1:-1;;;;;2158:15:43;;;;2401:18:156;;2158:30:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;2151:61;;2079:140;:::o;1031:18:88:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4463:257:87:-;4569:11;;4533:7;;4650:11;;:63;;4673:40;4691:13;:11;:13::i;:::-;4673:6;;4706;4673:17;:40::i;:::-;4650:63;;;4664:6;4650:63;4643:70;4463:257;-1:-1:-1;;;4463:257:87:o;2461:211:88:-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:88;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;160:25:156;;148:2;133:18;;14:177;2606:37:88;;;;;;;;-1:-1:-1;2661:4:88;2461:211;;;;;:::o;5114:255:87:-;5220:11;;5184:7;;5301:11;;:61;;5324:38;5340:6;5348:13;:11;:13::i;:::-;5324:6;;:38;:15;:38::i;3057:592:88:-;-1:-1:-1;;;;;3209:15:88;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:88;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:88;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:88;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:88;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;-1:-1:-1;;;;;;;;;;;3594:26:88;;;3562:6;160:25:156;;148:2;133:18;;14:177;3594:26:88;;;;;;;;-1:-1:-1;3638:4:88;;3057:592;-1:-1:-1;;;;3057:592:88:o;2243:92:43:-;2295:9;:7;:9::i;:::-;2314:5;:14;2243:92::o;5327:177:88:-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;5410:87::-;-1:-1:-1;5446:24:88;;5327:177::o;5375:124:87:-;5443:7;5469:23;5485:6;5469:15;:23::i;1257:185:43:-;1357:7;1376:9;:7;:9::i;:::-;1402:33;1416:7;1425:9;1402:13;:33::i;1448:179::-;1545:7;1564:9;:7;:9::i;:::-;1590:30;1601:7;1610:9;1590:10;:30::i;1056:20:88:-;;;;;;;:::i;2678:373::-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:88;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;-1:-1:-1;;;;;;;;;;;2990:32:88;;;2958:6;160:25:156;;148:2;133:18;;14:177;4857:251:87;4959:11;;4923:7;;5040:11;;:61;;5063:38;5079:13;:11;:13::i;:::-;5063:6;;5094;5063:15;:38::i;1633:219:43:-;1758:7;1777:9;:7;:9::i;:::-;1803:42;1818:7;1827:9;1838:6;1803:14;:42::i;:::-;1796:49;1633:219;-1:-1:-1;;;;1633:219:43:o;1858:215::-;1981:7;2000:9;:7;:9::i;:::-;2026:40;2039:7;2048:9;2059:6;2026:12;:40::i;4200:257:87:-;4306:11;;4270:7;;4387:11;;:63;;4410:40;4428:6;4436:13;:11;:13::i;:::-;4410:6;;:40;:17;:40::i;5921:131::-;-1:-1:-1;;;;;6028:16:87;;5986:7;6028:16;;;:9;:16;;;;;;6012:33;;:15;:33::i;3838:1483:88:-;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:88;;5615:2:156;4037:63:88;;;5597:21:156;5654:2;5634:18;;;5627:30;5693:25;5673:18;;;5666:53;5736:18;;4037:63:88;;;;;;;;;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:88;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;6052:25:156;6131:18;;;6124:43;;;;6203:15;;;6183:18;;;6176:43;6235:18;;;6228:34;;;6278:19;;;6271:35;;;;6322:19;;;;6315:35;;;4511:449:88;;;;;;;;;;6024:19:156;;;4511:449:88;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:88;;;6619:27:156;6662:11;;;6655:27;;;;6698:12;;;6691:28;;;;6735:12;;4350:658:88;;;-1:-1:-1;;4350:658:88;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;6985:25:156;7058:4;7046:17;;7026:18;;;7019:45;7080:18;;;7073:34;;;7123:18;;;7116:34;;;6957:19;;4292:805:88;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:88;;-1:-1:-1;;4292:805:88;;;-1:-1:-1;;;;;;;5120:30:88;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:88;:16;-1:-1:-1;;;;;5154:25:88;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:88;;7363:2:156;5112:86:88;;;7345:21:156;7402:2;7382:18;;;7375:30;-1:-1:-1;;;7421:18:156;;;7414:44;7475:18;;5112:86:88;7161:338:156;5112:86:88;-1:-1:-1;;;;;5213:27:88;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;160:25:156;;;5213:36:88;;5283:31;;;;;133:18:156;5283:31:88;;;;;;;3838:1483;;;;;;;:::o;4726:125:87:-;4795:7;4821:23;4837:6;4821:15;:23::i;2575:322:43:-;2629:7;2701:19;2723:72;2777:8;2742:12;;2724:15;:30;;;;:::i;:::-;2723:40;;:72::i;:::-;2701:94;;2824:66;2863:26;2877:11;2863:5;;:13;;:26;;;;:::i;:::-;2824:30;;-1:-1:-1;;;2824:30:43;;2848:4;2824:30;;;2428:51:156;2824:5:43;-1:-1:-1;;;;;2824:15:43;;;;2401:18:156;;2824:30:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;:66::i;:::-;2805:85;;;2575:322;:::o;1564:526:90:-;1680:9;1928:1;-1:-1:-1;;1911:19:90;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:90;;2047:27;;1564:526::o;2096:672::-;2210:9;2458:1;-1:-1:-1;;2441:19:90;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:90;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;2427:142:43:-;2487:5;-1:-1:-1;;;;;2465:34:43;;2500:21;:19;:21::i;:::-;2465:57;;;;;;;;;;;;;160:25:156;;148:2;133:18;;14:177;2465:57:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2547:15:43;2532:12;:30;-1:-1:-1;;2427:142:43:o;5510:446:88:-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;9030:25:156;;;;9071:18;;9064:34;;;;5833:14:88;9114:18:156;;;9107:34;5869:13:88;9157:18:156;;;9150:34;5912:4:88;9200:19:156;;;9193:61;9002:19;;5640:295:88;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;1550:516:87:-;1625:14;1744:22;1759:6;1744:14;:22::i;:::-;1735:31;;;1771:1;1734:38;1726:62;;;;-1:-1:-1;;;1726:62:87;;9467:2:156;1726:62:87;;;9449:21:156;9506:2;9486:18;;;9479:30;-1:-1:-1;;;9525:18:156;;;9518:41;9576:18;;1726:62:87;9265:335:156;1726:62:87;1868:57;-1:-1:-1;;;;;1868:5:87;:22;1891:10;1911:4;1918:6;1868:22;:57::i;:::-;1936:23;1942:8;1952:6;1936:5;:23::i;:::-;1975:45;;;9779:25:156;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;1975:45:87;;;1983:10;;1975:45;;9752:18:156;1975:45:87;;;;;;;;2031:28;6443:73;2072:467;2144:14;2179:19;2191:6;2179:11;:19::i;:::-;2170:28;-1:-1:-1;2341:57:87;-1:-1:-1;;;;;2341:5:87;:22;2364:10;2384:4;2170:28;2341:22;:57::i;:::-;2409:23;2415:8;2425:6;2409:5;:23::i;:::-;2448:45;;;9779:25:156;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;2448:45:87;;;2456:10;;2448:45;;9752:18:156;2448:45:87;9605:248:156;2545:679:87;2666:14;2701:23;2717:6;2701:15;:23::i;:::-;2692:32;-1:-1:-1;2806:10:87;-1:-1:-1;;;;;2806:19:87;;;2802:228;;-1:-1:-1;;;;;2859:16:87;;2841:15;2859:16;;;:9;:16;;;;;;;;2876:10;2859:28;;;;;;;;-1:-1:-1;;2942:28:87;;2938:81;;3003:16;3013:6;3003:7;:16;:::i;:::-;-1:-1:-1;;;;;2972:16:87;;;;;;:9;:16;;;;;;;;2989:10;2972:28;;;;;;;:47;2938:81;2827:203;2802:228;3081:20;3087:5;3094:6;3081:5;:20::i;:::-;3117:53;;;9779:25:156;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;3117:53:87;;;;;;;;3126:10;;3117:53;;9752:18:156;3117:53:87;;;;;;;3181:36;-1:-1:-1;;;;;3181:5:87;:18;3200:8;3210:6;3181:18;:36::i;3230:713::-;3349:14;3379:10;-1:-1:-1;;;;;3379:19:87;;;3375:228;;-1:-1:-1;;;;;3432:16:87;;3414:15;3432:16;;;:9;:16;;;;;;;;3449:10;3432:28;;;;;;;;-1:-1:-1;;3515:28:87;;3511:81;;3576:16;3586:6;3576:7;:16;:::i;:::-;-1:-1:-1;;;;;3545:16:87;;;;;;:9;:16;;;;;;;;3562:10;3545:28;;;;;;;:47;3511:81;3400:203;3375:228;3705:21;3719:6;3705:13;:21::i;:::-;3696:30;;;3731:1;3695:37;3687:61;;;;-1:-1:-1;;;3687:61:87;;10060:2:156;3687:61:87;;;10042:21:156;10099:2;10079:18;;;10072:30;-1:-1:-1;;;10118:18:156;;;10111:41;10169:18;;3687:61:87;9858:335:156;3687:61:87;3800:20;3806:5;3813:6;3800:5;:20::i;:::-;3836:53;;;9779:25:156;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;3836:53:87;;;;;;;;3845:10;;3836:53;;9752:18:156;3836:53:87;;;;;;;3900:36;-1:-1:-1;;;;;3900:5:87;:18;3919:8;3929:6;3900:18;:36::i;3281:165:31:-;3343:7;3370:22;3381:1;3384:4;3390:1;3370:10;:22::i;2888:119::-;2950:7;2977:22;2988:1;2991;2994:4;2977:10;:22::i;1328:1616:92:-;1466:12;1636:4;1630:11;-1:-1:-1;;;1759:17:92;1752:93;1892:4;1888:1;1869:17;1865:25;1858:39;1976:2;1971;1952:17;1948:26;1941:38;2056:6;2051:2;2032:17;2028:26;2021:42;2860:2;2857:1;2852:3;2833:17;2830:1;2823:5;2816;2811:52;2379:16;2372:24;2366:2;2348:16;2345:24;2341:1;2337;2331:8;2328:15;2324:46;2321:76;2121:756;2110:767;;;2905:7;2897:40;;;;-1:-1:-1;;;2897:40:92;;10400:2:156;2897:40:92;;;10382:21:156;10439:2;10419:18;;;10412:30;-1:-1:-1;;;10458:18:156;;;10451:50;10518:18;;2897:40:92;10198:344:156;2897:40:92;1456:1488;1328:1616;;;;:::o;6150:325:88:-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:88;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;160:25:156;;;-1:-1:-1;;;;;;;;;;;6436:32:88;133:18:156;6436:32:88;;;;;;;;6150:325;;:::o;6481:328::-;-1:-1:-1;;;;;6553:15:88;;;;;;:9;:15;;;;;:25;;6572:6;;6553:15;:25;;6572:6;;6553:25;:::i;:::-;;;;-1:-1:-1;;6721:11:88;:21;;;;;;;6768:34;;160:25:156;;;-1:-1:-1;;;;;;;6768:34:88;;;-1:-1:-1;;;;;;;;;;;6768:34:88;148:2:156;133:18;6768:34:88;14:177:156;2950:1499:92;3062:12;3232:4;3226:11;-1:-1:-1;;;3355:17:92;3348:93;3488:2;3484:1;3465:17;3461:25;3454:37;3568:6;3563:2;3544:17;3540:26;3533:42;4370:2;4367:1;4363:2;4344:17;4341:1;4334:5;4327;4322:51;3891:16;3884:24;3878:2;3860:16;3857:24;3853:1;3849;3843:8;3840:15;3836:46;3833:76;3633:754;3622:765;;;4415:7;4407:35;;;;-1:-1:-1;;;4407:35:92;;10749:2:156;4407:35:92;;;10731:21:156;10788:2;10768:18;;;10761:30;-1:-1:-1;;;10807:18:156;;;10800:45;10862:18;;4407:35:92;10547:339:156;4407:35:92;3052:1397;2950:1499;;;:::o;196:548:156:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:156;;749:180;-1:-1:-1;749:180:156:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:156;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:156:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2490:186::-;2549:6;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2641:29;2660:9;2641:29;:::i;2681:254::-;2749:6;2757;2810:2;2798:9;2789:7;2785:23;2781:32;2778:52;;;2826:1;2823;2816:12;2778:52;2862:9;2849:23;2839:33;;2891:38;2925:2;2914:9;2910:18;2891:38;:::i;:::-;2881:48;;2681:254;;;;;:::o;2940:328::-;3017:6;3025;3033;3086:2;3074:9;3065:7;3061:23;3057:32;3054:52;;;3102:1;3099;3092:12;3054:52;3138:9;3125:23;3115:33;;3167:38;3201:2;3190:9;3186:18;3167:38;:::i;:::-;3157:48;;3224:38;3258:2;3247:9;3243:18;3224:38;:::i;:::-;3214:48;;2940:328;;;;;:::o;3273:693::-;3384:6;3392;3400;3408;3416;3424;3432;3485:3;3473:9;3464:7;3460:23;3456:33;3453:53;;;3502:1;3499;3492:12;3453:53;3525:29;3544:9;3525:29;:::i;:::-;3515:39;;3573:38;3607:2;3596:9;3592:18;3573:38;:::i;:::-;3563:48;;3658:2;3647:9;3643:18;3630:32;3620:42;;3709:2;3698:9;3694:18;3681:32;3671:42;;3763:3;3752:9;3748:19;3735:33;3808:4;3801:5;3797:16;3790:5;3787:27;3777:55;;3828:1;3825;3818:12;3777:55;3273:693;;;;-1:-1:-1;3273:693:156;;;;3851:5;3903:3;3888:19;;3875:33;;-1:-1:-1;3955:3:156;3940:19;;;3927:33;;3273:693;-1:-1:-1;;3273:693:156:o;3971:260::-;4039:6;4047;4100:2;4088:9;4079:7;4075:23;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4139:29;4158:9;4139:29;:::i;:::-;4129:39;;4187:38;4221:2;4210:9;4206:18;4187:38;:::i;4444:184::-;4514:6;4567:2;4555:9;4546:7;4542:23;4538:32;4535:52;;;4583:1;4580;4573:12;4535:52;-1:-1:-1;4606:16:156;;4444:184;-1:-1:-1;4444:184:156:o;4633:127::-;4694:10;4689:3;4685:20;4682:1;4675:31;4725:4;4722:1;4715:15;4749:4;4746:1;4739:15;4765:125;4830:9;;;4851:10;;;4848:36;;;4864:18;;:::i;4895:380::-;4974:1;4970:12;;;;5017;;;5038:61;;5092:4;5084:6;5080:17;5070:27;;5038:61;5145:2;5137:6;5134:14;5114:18;5111:38;5108:161;;5191:10;5186:3;5182:20;5179:1;5172:31;5226:4;5223:1;5216:15;5254:4;5251:1;5244:15;5108:161;;4895:380;;;:::o;5280:128::-;5347:9;;;5368:11;;;5365:37;;;5382:18;;:::i;7633:1133::-;7763:3;7792:1;7825:6;7819:13;7855:3;7877:1;7905:9;7901:2;7897:18;7887:28;;7965:2;7954:9;7950:18;7987;7977:61;;8031:4;8023:6;8019:17;8009:27;;7977:61;8057:2;8105;8097:6;8094:14;8074:18;8071:38;8068:165;;-1:-1:-1;;;8132:33:156;;8188:4;8185:1;8178:15;8218:4;8139:3;8206:17;8068:165;8249:18;8276:133;;;;8423:1;8418:323;;;;8242:499;;8276:133;-1:-1:-1;;8309:24:156;;8297:37;;8382:14;;8375:22;8363:35;;8354:45;;;-1:-1:-1;8276:133:156;;8418:323;7580:1;7573:14;;;7617:4;7604:18;;8516:1;8530:165;8544:6;8541:1;8538:13;8530:165;;;8622:14;;8609:11;;;8602:35;8665:16;;;;8559:10;;8530:165;;;8534:3;;8724:6;8719:3;8715:16;8708:23;;8242:499;-1:-1:-1;8757:3:156;;7633:1133;-1:-1:-1;;;;;;;;7633:1133:156:o", + "object": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063ba087652116100a2578063d505accf11610071578063d505accf14610419578063d905777e1461042c578063dd62ed3e14610455578063ef8b30f71461048057600080fd5b8063ba087652146103e0578063c63d75b614610309578063c6e6f592146103f3578063ce96cb771461040657600080fd5b806395d89b41116100de57806395d89b411461039f578063a9059cbb146103a7578063b3d7f6b9146103ba578063b460af94146103cd57600080fd5b806370a082311461034c5780637ecebe001461036c57806394bf804d1461038c57600080fd5b8063313ce5671161017c578063402d267d1161014b578063402d267d146103095780634cdad5061461031e578063679aefce146103315780636e553f651461033957600080fd5b8063313ce5671461027457806334fcf437146102ad5780633644e515146102c257806338d52e0f146102ca57600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026157600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610493565b6040519081526020015b60405180910390f35b610202610534565b6040516101f19190611319565b6101e761021d366004611367565b6105c2565b61023561023036600461139c565b6105ef565b60405190151581526020016101f1565b6101e7610253366004611367565b61065c565b6101e760025481565b61023561026f3660046113c6565b61067c565b61029b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f1565b6102c06102bb366004611367565b61075c565b005b6101e7610769565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f1565b6101e7610317366004611402565b5060001990565b6101e761032c366004611367565b6107bf565b6006546101e7565b6101e761034736600461141d565b6107ca565b6101e761035a366004611402565b60036020526000908152604090205481565b6101e761037a366004611402565b60056020526000908152604090205481565b6101e761039a36600461141d565b6107de565b6102026107f2565b6102356103b536600461139c565b6107ff565b6101e76103c8366004611367565b610865565b6101e76103db366004611449565b610884565b6101e76103ee366004611449565b6108a1565b6101e7610401366004611367565b6108b6565b6101e7610414366004611402565b6108d6565b6102c0610427366004611485565b6108f8565b6101e761043a366004611402565b6001600160a01b031660009081526003602052604090205490565b6101e76104633660046114f8565b600460209081526000928352604080842090915290825290205481565b6101e761048e366004611367565b610b41565b600061049d610b4c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190611522565b61052f9190611551565b905090565b6000805461054190611564565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90611564565b80156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505081565b60025460009080156105e6576105e16105d9610493565b849083610c15565b6105e8565b825b9392505050565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061064a9086815260200190565b60405180910390a35060015b92915050565b60025460009080156105e6576105e181610674610493565b859190610c33565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146106d8576106b3838261159e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b0385166000908152600360205260408120805485929061070090849061159e565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020611651833981519152906107499087815260200190565b60405180910390a3506001949350505050565b610764610c59565b600655565b60007f0000000000000000000000000000000000000000000000000000000000000000461461079a5761052f610ce6565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000610656826105c2565b60006107d4610c59565b6105e88383610d80565b60006107e8610c59565b6105e88383610e56565b6001805461054190611564565b3360009081526003602052604081208054839190839061082090849061159e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133906000805160206116518339815191529061064a9086815260200190565b60025460009080156105e6576105e161087c610493565b849083610c33565b600061088e610c59565b610899848484610ee5565b949350505050565b60006108ab610c59565b610899848484610fe9565b60025460009080156105e6576105e1816108ce610493565b859190610c15565b6001600160a01b038116600090815260036020526040812054610656906105c2565b4284101561094d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b60006001610959610769565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610a9b5750876001600160a01b0316816001600160a01b0316145b610ad85760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610944565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000610656826108b6565b600080610b6b6301e1338060075442610b65919061159e565b9061112b565b905060006105e8610b878360065461114090919063ffffffff16565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0f9190611522565b90611140565b6000826000190484118302158202610c2c57600080fd5b5091020490565b6000826000190484118302158202610c4a57600080fd5b50910281810615159190040190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0712d68610c90610b4c565b6040518263ffffffff1660e01b8152600401610cae91815260200190565b600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b5050426007555050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610d1891906115b1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000610d8b83610b41565b905080600003610dcb5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610944565b610e006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611155565b610e0a82826111df565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3610656565b6000610e6183610865565b9050610e986001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611155565b610ea282846111df565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101610e49565b6000610ef08461065c565b9050336001600160a01b03831614610f60576001600160a01b03821660009081526004602090815260408083203384529091529020546000198114610f5e57610f39828261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b610f6a8282611239565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848661129b565b6000336001600160a01b03831614611059576001600160a01b0382166000908152600460209081526040808320338452909152902054600019811461105757611032858261159e565b6001600160a01b03841660009081526004602090815260408083203384529091529020555b505b611062846107bf565b9050806000036110a25760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610944565b6110ac8285611239565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46105e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361129b565b60006105e883670de0b6b3a764000084610c15565b60006105e88383670de0b6b3a7640000610c15565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806111d85760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610944565b5050505050565b80600260008282546111f19190611551565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061165183398151915291015b60405180910390a35050565b6001600160a01b0382166000908152600360205260408120805483929061126190849061159e565b90915550506002805482900390556040518181526000906001600160a01b038416906000805160206116518339815191529060200161122d565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806113135760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610944565b50505050565b600060208083528351808285015260005b818110156113465785810183015185820160400152820161132a565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561137957600080fd5b5035919050565b80356001600160a01b038116811461139757600080fd5b919050565b600080604083850312156113af57600080fd5b6113b883611380565b946020939093013593505050565b6000806000606084860312156113db57600080fd5b6113e484611380565b92506113f260208501611380565b9150604084013590509250925092565b60006020828403121561141457600080fd5b6105e882611380565b6000806040838503121561143057600080fd5b8235915061144060208401611380565b90509250929050565b60008060006060848603121561145e57600080fd5b8335925061146e60208501611380565b915061147c60408501611380565b90509250925092565b600080600080600080600060e0888a0312156114a057600080fd5b6114a988611380565b96506114b760208901611380565b95506040880135945060608801359350608088013560ff811681146114db57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561150b57600080fd5b61151483611380565b915061144060208401611380565b60006020828403121561153457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106565761065661153b565b600181811c9082168061157857607f821691505b60208210810361159857634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156106565761065661153b565b600080835481600182811c9150808316806115cd57607f831692505b602080841082036115ec57634e487b7160e01b86526022600452602486fd5b818015611600576001811461161557611642565b60ff1986168952841515850289019650611642565b60008a81526020902060005b8681101561163a5781548b820152908501908301611621565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220505c85b218de4b19620ab4c6166c02ffd48fcf94db668dd51a4d412f7aab075c64736f6c63430008130033", + "sourceMap": "824:2120:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:140;;;:::i;:::-;;;160:25:158;;;148:2;133:18;2079:140:39;;;;;;;;1031:18:87;;;:::i;:::-;;;;;;;:::i;4463:257:86:-;;;;;;:::i;:::-;;:::i;2461:211:87:-;;;;;;:::i;:::-;;:::i;:::-;;;1536:14:158;;1529:22;1511:41;;1499:2;1484:18;2461:211:87;1371:187:158;5114:255:86;;;;;;:::i;:::-;;:::i;1304:26:87:-;;;;;;3057:592;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;2068:4:158;2056:17;;;2038:36;;2026:2;2011:18;1083:31:87;1896:184:158;2243:92:39;;;;;;:::i;:::-;;:::i;:::-;;5327:177:87;;;:::i;1149:28:86:-;;;;;;;;-1:-1:-1;;;;;2446:32:158;;;2428:51;;2416:2;2401:18;1149:28:86;2267:218:158;5696:108:86;;;;;;:::i;:::-;-1:-1:-1;;;5780:17:86;5696:108;5375:124;;;;;;:::i;:::-;;:::i;2341:80:39:-;2409:5;;2341:80;;1257:185;;;;;;:::i;:::-;;:::i;1337:44:87:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1751:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1448:179:39;;;;;;:::i;:::-;;:::i;1056:20:87:-;;;:::i;2678:373::-;;;;;;:::i;:::-;;:::i;4857:251:86:-;;;;;;:::i;:::-;;:::i;1633:219:39:-;;;;;;:::i;:::-;;:::i;1858:215::-;;;;;;:::i;:::-;;:::i;4200:257:86:-;;;;;;:::i;:::-;;:::i;5921:131::-;;;;;;:::i;:::-;;:::i;3838:1483:87:-;;;;;;:::i;:::-;;:::i;6058:112:86:-;;;;;;:::i;:::-;-1:-1:-1;;;;;6147:16:86;6121:7;6147:16;;;:9;:16;;;;;;;6058:112;1388:64:87;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4726:125:86;;;;;;:::i;:::-;;:::i;2079:140:39:-;2132:7;2191:21;:19;:21::i;:::-;2158:30;;-1:-1:-1;;;2158:30:39;;2182:4;2158:30;;;2428:51:158;2158:5:39;-1:-1:-1;;;;;2158:15:39;;;;2401:18:158;;2158:30:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;2151:61;;2079:140;:::o;1031:18:87:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4463:257:86:-;4569:11;;4533:7;;4650:11;;:63;;4673:40;4691:13;:11;:13::i;:::-;4673:6;;4706;4673:17;:40::i;:::-;4650:63;;;4664:6;4650:63;4643:70;4463:257;-1:-1:-1;;;4463:257:86:o;2461:211:87:-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:87;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;160:25:158;;148:2;133:18;;14:177;2606:37:87;;;;;;;;-1:-1:-1;2661:4:87;2461:211;;;;;:::o;5114:255:86:-;5220:11;;5184:7;;5301:11;;:61;;5324:38;5340:6;5348:13;:11;:13::i;:::-;5324:6;;:38;:15;:38::i;3057:592:87:-;-1:-1:-1;;;;;3209:15:87;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:87;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:87;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:87;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:87;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;-1:-1:-1;;;;;;;;;;;3594:26:87;;;3562:6;160:25:158;;148:2;133:18;;14:177;3594:26:87;;;;;;;;-1:-1:-1;3638:4:87;;3057:592;-1:-1:-1;;;;3057:592:87:o;2243:92:39:-;2295:9;:7;:9::i;:::-;2314:5;:14;2243:92::o;5327:177:87:-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;5410:87::-;-1:-1:-1;5446:24:87;;5327:177::o;5375:124:86:-;5443:7;5469:23;5485:6;5469:15;:23::i;1257:185:39:-;1357:7;1376:9;:7;:9::i;:::-;1402:33;1416:7;1425:9;1402:13;:33::i;1448:179::-;1545:7;1564:9;:7;:9::i;:::-;1590:30;1601:7;1610:9;1590:10;:30::i;1056:20:87:-;;;;;;;:::i;2678:373::-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:87;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;-1:-1:-1;;;;;;;;;;;2990:32:87;;;2958:6;160:25:158;;148:2;133:18;;14:177;4857:251:86;4959:11;;4923:7;;5040:11;;:61;;5063:38;5079:13;:11;:13::i;:::-;5063:6;;5094;5063:15;:38::i;1633:219:39:-;1758:7;1777:9;:7;:9::i;:::-;1803:42;1818:7;1827:9;1838:6;1803:14;:42::i;:::-;1796:49;1633:219;-1:-1:-1;;;;1633:219:39:o;1858:215::-;1981:7;2000:9;:7;:9::i;:::-;2026:40;2039:7;2048:9;2059:6;2026:12;:40::i;4200:257:86:-;4306:11;;4270:7;;4387:11;;:63;;4410:40;4428:6;4436:13;:11;:13::i;:::-;4410:6;;:40;:17;:40::i;5921:131::-;-1:-1:-1;;;;;6028:16:86;;5986:7;6028:16;;;:9;:16;;;;;;6012:33;;:15;:33::i;3838:1483:87:-;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:87;;5615:2:158;4037:63:87;;;5597:21:158;5654:2;5634:18;;;5627:30;5693:25;5673:18;;;5666:53;5736:18;;4037:63:87;;;;;;;;;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:87;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;6052:25:158;6131:18;;;6124:43;;;;6203:15;;;6183:18;;;6176:43;6235:18;;;6228:34;;;6278:19;;;6271:35;;;;6322:19;;;;6315:35;;;4511:449:87;;;;;;;;;;6024:19:158;;;4511:449:87;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:87;;;6619:27:158;6662:11;;;6655:27;;;;6698:12;;;6691:28;;;;6735:12;;4350:658:87;;;-1:-1:-1;;4350:658:87;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;6985:25:158;7058:4;7046:17;;7026:18;;;7019:45;7080:18;;;7073:34;;;7123:18;;;7116:34;;;6957:19;;4292:805:87;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:87;;-1:-1:-1;;4292:805:87;;;-1:-1:-1;;;;;;;5120:30:87;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:87;:16;-1:-1:-1;;;;;5154:25:87;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:87;;7363:2:158;5112:86:87;;;7345:21:158;7402:2;7382:18;;;7375:30;-1:-1:-1;;;7421:18:158;;;7414:44;7475:18;;5112:86:87;7161:338:158;5112:86:87;-1:-1:-1;;;;;5213:27:87;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;160:25:158;;;5213:36:87;;5283:31;;;;;133:18:158;5283:31:87;;;;;;;3838:1483;;;;;;;:::o;4726:125:86:-;4795:7;4821:23;4837:6;4821:15;:23::i;2575:367:39:-;2629:7;2701:19;2723:72;2777:8;2742:12;;2724:15;:30;;;;:::i;:::-;2723:40;;:72::i;:::-;2701:94;;2805:15;2823:88;2875:26;2889:11;2875:5;;:13;;:26;;;;:::i;:::-;2823:30;;-1:-1:-1;;;2823:30:39;;2847:4;2823:30;;;2428:51:158;2823:5:39;-1:-1:-1;;;;;2823:15:39;;;;2401:18:158;;2823:30:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;:88::i;1564:526:89:-;1680:9;1928:1;-1:-1:-1;;1911:19:89;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:89;;2047:27;;1564:526::o;2096:672::-;2210:9;2458:1;-1:-1:-1;;2441:19:89;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:89;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;2427:142:39:-;2487:5;-1:-1:-1;;;;;2465:34:39;;2500:21;:19;:21::i;:::-;2465:57;;;;;;;;;;;;;160:25:158;;148:2;133:18;;14:177;2465:57:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2547:15:39;2532:12;:30;-1:-1:-1;;2427:142:39:o;5510:446:87:-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;9030:25:158;;;;9071:18;;9064:34;;;;5833:14:87;9114:18:158;;;9107:34;5869:13:87;9157:18:158;;;9150:34;5912:4:87;9200:19:158;;;9193:61;9002:19;;5640:295:87;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;1550:516:86:-;1625:14;1744:22;1759:6;1744:14;:22::i;:::-;1735:31;;;1771:1;1734:38;1726:62;;;;-1:-1:-1;;;1726:62:86;;9467:2:158;1726:62:86;;;9449:21:158;9506:2;9486:18;;;9479:30;-1:-1:-1;;;9525:18:158;;;9518:41;9576:18;;1726:62:86;9265:335:158;1726:62:86;1868:57;-1:-1:-1;;;;;1868:5:86;:22;1891:10;1911:4;1918:6;1868:22;:57::i;:::-;1936:23;1942:8;1952:6;1936:5;:23::i;:::-;1975:45;;;9779:25:158;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;1975:45:86;;;1983:10;;1975:45;;9752:18:158;1975:45:86;;;;;;;;2031:28;6443:73;2072:467;2144:14;2179:19;2191:6;2179:11;:19::i;:::-;2170:28;-1:-1:-1;2341:57:86;-1:-1:-1;;;;;2341:5:86;:22;2364:10;2384:4;2170:28;2341:22;:57::i;:::-;2409:23;2415:8;2425:6;2409:5;:23::i;:::-;2448:45;;;9779:25:158;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;2448:45:86;;;2456:10;;2448:45;;9752:18:158;2448:45:86;9605:248:158;2545:679:86;2666:14;2701:23;2717:6;2701:15;:23::i;:::-;2692:32;-1:-1:-1;2806:10:86;-1:-1:-1;;;;;2806:19:86;;;2802:228;;-1:-1:-1;;;;;2859:16:86;;2841:15;2859:16;;;:9;:16;;;;;;;;2876:10;2859:28;;;;;;;;-1:-1:-1;;2942:28:86;;2938:81;;3003:16;3013:6;3003:7;:16;:::i;:::-;-1:-1:-1;;;;;2972:16:86;;;;;;:9;:16;;;;;;;;2989:10;2972:28;;;;;;;:47;2938:81;2827:203;2802:228;3081:20;3087:5;3094:6;3081:5;:20::i;:::-;3117:53;;;9779:25:158;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;3117:53:86;;;;;;;;3126:10;;3117:53;;9752:18:158;3117:53:86;;;;;;;3181:36;-1:-1:-1;;;;;3181:5:86;:18;3200:8;3210:6;3181:18;:36::i;3230:713::-;3349:14;3379:10;-1:-1:-1;;;;;3379:19:86;;;3375:228;;-1:-1:-1;;;;;3432:16:86;;3414:15;3432:16;;;:9;:16;;;;;;;;3449:10;3432:28;;;;;;;;-1:-1:-1;;3515:28:86;;3511:81;;3576:16;3586:6;3576:7;:16;:::i;:::-;-1:-1:-1;;;;;3545:16:86;;;;;;:9;:16;;;;;;;;3562:10;3545:28;;;;;;;:47;3511:81;3400:203;3375:228;3705:21;3719:6;3705:13;:21::i;:::-;3696:30;;;3731:1;3695:37;3687:61;;;;-1:-1:-1;;;3687:61:86;;10060:2:158;3687:61:86;;;10042:21:158;10099:2;10079:18;;;10072:30;-1:-1:-1;;;10118:18:158;;;10111:41;10169:18;;3687:61:86;9858:335:158;3687:61:86;3800:20;3806:5;3813:6;3800:5;:20::i;:::-;3836:53;;;9779:25:158;;;9835:2;9820:18;;9813:34;;;-1:-1:-1;;;;;3836:53:86;;;;;;;;3845:10;;3836:53;;9752:18:158;3836:53:86;;;;;;;3900:36;-1:-1:-1;;;;;3900:5:86;:18;3919:8;3929:6;3900:18;:36::i;2207:165:27:-;2269:7;2296:22;2307:1;2310:4;2316:1;2296:10;:22::i;1814:119::-;1876:7;1903:22;1914:1;1917;1920:4;1903:10;:22::i;1328:1616:91:-;1466:12;1636:4;1630:11;-1:-1:-1;;;1759:17:91;1752:93;1892:4;1888:1;1869:17;1865:25;1858:39;1976:2;1971;1952:17;1948:26;1941:38;2056:6;2051:2;2032:17;2028:26;2021:42;2860:2;2857:1;2852:3;2833:17;2830:1;2823:5;2816;2811:52;2379:16;2372:24;2366:2;2348:16;2345:24;2341:1;2337;2331:8;2328:15;2324:46;2321:76;2121:756;2110:767;;;2905:7;2897:40;;;;-1:-1:-1;;;2897:40:91;;10400:2:158;2897:40:91;;;10382:21:158;10439:2;10419:18;;;10412:30;-1:-1:-1;;;10458:18:158;;;10451:50;10518:18;;2897:40:91;10198:344:158;2897:40:91;1456:1488;1328:1616;;;;:::o;6150:325:87:-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:87;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;160:25:158;;;-1:-1:-1;;;;;;;;;;;6436:32:87;133:18:158;6436:32:87;;;;;;;;6150:325;;:::o;6481:328::-;-1:-1:-1;;;;;6553:15:87;;;;;;:9;:15;;;;;:25;;6572:6;;6553:15;:25;;6572:6;;6553:25;:::i;:::-;;;;-1:-1:-1;;6721:11:87;:21;;;;;;;6768:34;;160:25:158;;;-1:-1:-1;;;;;;;6768:34:87;;;-1:-1:-1;;;;;;;;;;;6768:34:87;148:2:158;133:18;6768:34:87;14:177:158;2950:1499:91;3062:12;3232:4;3226:11;-1:-1:-1;;;3355:17:91;3348:93;3488:2;3484:1;3465:17;3461:25;3454:37;3568:6;3563:2;3544:17;3540:26;3533:42;4370:2;4367:1;4363:2;4344:17;4341:1;4334:5;4327;4322:51;3891:16;3884:24;3878:2;3860:16;3857:24;3853:1;3849;3843:8;3840:15;3836:46;3833:76;3633:754;3622:765;;;4415:7;4407:35;;;;-1:-1:-1;;;4407:35:91;;10749:2:158;4407:35:91;;;10731:21:158;10788:2;10768:18;;;10761:30;-1:-1:-1;;;10807:18:158;;;10800:45;10862:18;;4407:35:91;10547:339:158;4407:35:91;3052:1397;2950:1499;;;:::o;196:548:158:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:158;;749:180;-1:-1:-1;749:180:158:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:158;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:158:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2490:186::-;2549:6;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2641:29;2660:9;2641:29;:::i;2681:254::-;2749:6;2757;2810:2;2798:9;2789:7;2785:23;2781:32;2778:52;;;2826:1;2823;2816:12;2778:52;2862:9;2849:23;2839:33;;2891:38;2925:2;2914:9;2910:18;2891:38;:::i;:::-;2881:48;;2681:254;;;;;:::o;2940:328::-;3017:6;3025;3033;3086:2;3074:9;3065:7;3061:23;3057:32;3054:52;;;3102:1;3099;3092:12;3054:52;3138:9;3125:23;3115:33;;3167:38;3201:2;3190:9;3186:18;3167:38;:::i;:::-;3157:48;;3224:38;3258:2;3247:9;3243:18;3224:38;:::i;:::-;3214:48;;2940:328;;;;;:::o;3273:693::-;3384:6;3392;3400;3408;3416;3424;3432;3485:3;3473:9;3464:7;3460:23;3456:33;3453:53;;;3502:1;3499;3492:12;3453:53;3525:29;3544:9;3525:29;:::i;:::-;3515:39;;3573:38;3607:2;3596:9;3592:18;3573:38;:::i;:::-;3563:48;;3658:2;3647:9;3643:18;3630:32;3620:42;;3709:2;3698:9;3694:18;3681:32;3671:42;;3763:3;3752:9;3748:19;3735:33;3808:4;3801:5;3797:16;3790:5;3787:27;3777:55;;3828:1;3825;3818:12;3777:55;3273:693;;;;-1:-1:-1;3273:693:158;;;;3851:5;3903:3;3888:19;;3875:33;;-1:-1:-1;3955:3:158;3940:19;;;3927:33;;3273:693;-1:-1:-1;;3273:693:158:o;3971:260::-;4039:6;4047;4100:2;4088:9;4079:7;4075:23;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4139:29;4158:9;4139:29;:::i;:::-;4129:39;;4187:38;4221:2;4210:9;4206:18;4187:38;:::i;4444:184::-;4514:6;4567:2;4555:9;4546:7;4542:23;4538:32;4535:52;;;4583:1;4580;4573:12;4535:52;-1:-1:-1;4606:16:158;;4444:184;-1:-1:-1;4444:184:158:o;4633:127::-;4694:10;4689:3;4685:20;4682:1;4675:31;4725:4;4722:1;4715:15;4749:4;4746:1;4739:15;4765:125;4830:9;;;4851:10;;;4848:36;;;4864:18;;:::i;4895:380::-;4974:1;4970:12;;;;5017;;;5038:61;;5092:4;5084:6;5080:17;5070:27;;5038:61;5145:2;5137:6;5134:14;5114:18;5111:38;5108:161;;5191:10;5186:3;5182:20;5179:1;5172:31;5226:4;5223:1;5216:15;5254:4;5251:1;5244:15;5108:161;;4895:380;;;:::o;5280:128::-;5347:9;;;5368:11;;;5365:37;;;5382:18;;:::i;7633:1133::-;7763:3;7792:1;7825:6;7819:13;7855:3;7877:1;7905:9;7901:2;7897:18;7887:28;;7965:2;7954:9;7950:18;7987;7977:61;;8031:4;8023:6;8019:17;8009:27;;7977:61;8057:2;8105;8097:6;8094:14;8074:18;8071:38;8068:165;;-1:-1:-1;;;8132:33:158;;8188:4;8185:1;8178:15;8218:4;8139:3;8206:17;8068:165;8249:18;8276:133;;;;8423:1;8418:323;;;;8242:499;;8276:133;-1:-1:-1;;8309:24:158;;8297:37;;8382:14;;8375:22;8363:35;;8354:45;;;-1:-1:-1;8276:133:158;;8418:323;7580:1;7573:14;;;7617:4;7604:18;;8516:1;8530:165;8544:6;8541:1;8538:13;8530:165;;;8622:14;;8609:11;;;8602:35;8665:16;;;;8559:10;;8530:165;;;8534:3;;8724:6;8719:3;8715:16;8708:23;;8242:499;-1:-1:-1;8757:3:158;;7633:1133;-1:-1:-1;;;;;;;;7633:1133:158:o", "linkReferences": {}, "immutableReferences": { - "43365": [ + "61489": [ { "start": 719, "length": 32 @@ -760,43 +760,43 @@ "length": 32 }, { - "start": 2970, + "start": 2972, "length": 32 }, { - "start": 3167, + "start": 3163, "length": 32 }, { - "start": 3548, + "start": 3544, "length": 32 }, { - "start": 3700, + "start": 3696, "length": 32 }, { - "start": 4038, + "start": 4034, "length": 32 }, { - "start": 4360, + "start": 4356, "length": 32 } ], - "43868": [ + "61992": [ { "start": 633, "length": 32 } ], - "43882": [ + "62006": [ { "start": 1901, "length": 32 } ], - "43884": [ + "62008": [ { "start": 1949, "length": 32 @@ -836,7 +836,7 @@ "transferFrom(address,address,uint256)": "23b872dd", "withdraw(uint256,address,address)": "b460af94" }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ERC20Mintable\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_initialRate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rate_\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"MockERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256,address)\":{\"notice\":\"Overrides ///\"},\"setRate(uint256)\":{\"notice\":\"Mock ///\"}},\"notice\":\"This mock yield source will accrue interest at a specified rate Every stateful interaction will accrue interest, so the interest accrual will approximate continuous compounding as the contract is called more frequently.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockERC4626.sol\":\"MockERC4626\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e\",\"dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386\",\"dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166\",\"dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x6c068ea7e60a4d8476d6392ee3e98e937488de453f090ca935ca2c05c76a5db6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a41fa6fe454088e2de3432bf8c9202d9634a35beebe8a2f9cb310ba136da2105\",\"dweb:/ipfs/QmYeAhiDFctvKxSq1QyTPdguBuQ4ymPCi3u3e5GYnyFktd\"]},\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"contracts/test/MockERC4626.sol\":{\"keccak256\":\"0x7fcd5b97c2709dee4520e1916e1149e5deabdef9fc043f974671d96b00f36125\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://779e9e8f3c8f2ec813314c1d23e342206416078a0258e06fad21f33a5ab44dff\",\"dweb:/ipfs/QmTtFSnn57NtyyPcxj3ZLDbYtnzdSieFD6Btm61LtVy34o\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/solmate/src/mixins/ERC4626.sol\":{\"keccak256\":\"0xa404f6f45bd53f24a90cc5ffe95e16b52e3f2dfd88f0d7a1edcb35f815919a7b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9f01e32d713e05cc58c1563e9938a1c5e096b1da9f52c7ea8424f2317b94adc1\",\"dweb:/ipfs/QmVt5SsbA3kezM5pyovupN7iZLy6QVqY5qQRZKLFqxKJUs\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xbadf3d708cf532b12f75f78a1d423135954b63774a6d4ba15914a551d348db8a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://88ac8256bd520d1b8e6f9c4ac9e8777bffdc4a6c8afb1a848f596665779a55b4\",\"dweb:/ipfs/QmXx7X1dxe6f5VM91vgQ5BA4r2eF97GWDcQDrgHytcvfjU\"]}},\"version\":1}", + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ERC20Mintable\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_initialRate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rate_\",\"type\":\"uint256\"}],\"name\":\"setRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"DELV\",\"custom:disclaimer\":\"The language used in this code is for coding convenience only, and is not intended to, and does not, have any particular legal or regulatory significance.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"MockERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256,address)\":{\"notice\":\"Overrides ///\"},\"setRate(uint256)\":{\"notice\":\"Mock ///\"}},\"notice\":\"This mock yield source will accrue interest at a specified rate Every stateful interaction will accrue interest, so the interest accrual will approximate continuous compounding as the contract is called more frequently.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockERC4626.sol\":\"MockERC4626\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff\",\"dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993\",\"dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5\",\"dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"contracts/src/libraries/FixedPointMath.sol\":{\"keccak256\":\"0x7201face24c251bff410396e8c0591373c1d4da1b86ef3758e145de52c52919e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1a4c4306b3b99fe350078e31d98ed1cc74e72d9238ee9ee13be93c3048d0f8f\",\"dweb:/ipfs/QmYyPwjUmt7M1QsUbfwsnvV6saYKQVRYFTMM7AE3NKArRy\"]},\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"contracts/test/MockERC4626.sol\":{\"keccak256\":\"0x2c9256fdeea7afef9ae475c239dddb84295689344d20134ac1d0f68dae363237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c78dd4a1f667c8d873af1100c852ae8ebb6a50987599587a595a9a5757eea52a\",\"dweb:/ipfs/QmUTqPLg3t7Mfa844vYxMP2oDadCGtiWxP22BRhs69KyVQ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/solmate/src/mixins/ERC4626.sol\":{\"keccak256\":\"0xa404f6f45bd53f24a90cc5ffe95e16b52e3f2dfd88f0d7a1edcb35f815919a7b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9f01e32d713e05cc58c1563e9938a1c5e096b1da9f52c7ea8424f2317b94adc1\",\"dweb:/ipfs/QmVt5SsbA3kezM5pyovupN7iZLy6QVqY5qQRZKLFqxKJUs\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xbadf3d708cf532b12f75f78a1d423135954b63774a6d4ba15914a551d348db8a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://88ac8256bd520d1b8e6f9c4ac9e8777bffdc4a6c8afb1a848f596665779a55b4\",\"dweb:/ipfs/QmXx7X1dxe6f5VM91vgQ5BA4r2eF97GWDcQDrgHytcvfjU\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.19+commit.7dd6d404" @@ -1602,16 +1602,16 @@ }, "settings": { "remappings": [ - ":@aave/=lib/aave-v3-core/contracts/", - ":aave-v3-core/=lib/aave-v3-core/", - ":create3-factory/=lib/yield-daddy/lib/create3-factory/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":forge-std/=lib/forge-std/src/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/", - ":yield-daddy/=lib/yield-daddy/" + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/" ], "optimizer": { "enabled": true, @@ -1635,26 +1635,26 @@ "license": "MIT" }, "contracts/src/interfaces/IHyperdrive.sol": { - "keccak256": "0xc2297940a0a80d5fe458dec421b4bfdc4907bf20072e5811e2c43615318b2b7e", + "keccak256": "0x6555a5d1b0ea168b5c76bb5e84f151a9317cd8dd548671f43057ce1d564c6284", "urls": [ - "bzz-raw://7e81f9fbefb15894d0b11d55a251d43e7bafe39a7364a83220fc4112275c252e", - "dweb:/ipfs/QmVpi5wkKL2Un4UJs6WLYbQRp9fCUp6ZvvoZ4jECB4GCtJ" + "bzz-raw://962406e2819ea21f3bc9f3470698aa23cf0ec6dabbeb0df39f89132a8f62e0ff", + "dweb:/ipfs/Qmc3vuCt6oRkNnEVZMr2cKKXHMF7Dw1dfYFZ2BB6NQtywp" ], "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveRead.sol": { - "keccak256": "0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110", + "keccak256": "0x837939af4a9224c5f4ea564e9b33a5612442b7d7d50b7f8bb32be6bb3ce239b3", "urls": [ - "bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386", - "dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F" + "bzz-raw://3bfebedcb31d2edf86a69f0dfbcc5aa7b96edc2d8197b4a4681a200cb6ffe993", + "dweb:/ipfs/Qmeq4oAGxKv3mvRRWkqYBjfdozPkhi3MqBRFNnNkmAwCtt" ], "license": "Apache-2.0" }, "contracts/src/interfaces/IHyperdriveWrite.sol": { - "keccak256": "0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615", + "keccak256": "0x407ca42c0388e20c22c47eca42455c193fc0d06f92480cea09cbd092f5e27a16", "urls": [ - "bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166", - "dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG" + "bzz-raw://5ec5a45bb2951555f1e8191d999f08793f52568a98da819ead491686f139eab5", + "dweb:/ipfs/QmbcCg5s94WvJsv32DQyYM9xQaWyP6U1hJVJ8aQCTKbKSx" ], "license": "Apache-2.0" }, @@ -1691,10 +1691,10 @@ "license": "Apache-2.0" }, "contracts/src/libraries/FixedPointMath.sol": { - "keccak256": "0x6c068ea7e60a4d8476d6392ee3e98e937488de453f090ca935ca2c05c76a5db6", + "keccak256": "0x7201face24c251bff410396e8c0591373c1d4da1b86ef3758e145de52c52919e", "urls": [ - "bzz-raw://a41fa6fe454088e2de3432bf8c9202d9634a35beebe8a2f9cb310ba136da2105", - "dweb:/ipfs/QmYeAhiDFctvKxSq1QyTPdguBuQ4ymPCi3u3e5GYnyFktd" + "bzz-raw://d1a4c4306b3b99fe350078e31d98ed1cc74e72d9238ee9ee13be93c3048d0f8f", + "dweb:/ipfs/QmYyPwjUmt7M1QsUbfwsnvV6saYKQVRYFTMM7AE3NKArRy" ], "license": "Apache-2.0" }, @@ -1707,10 +1707,10 @@ "license": "Apache-2.0" }, "contracts/test/MockERC4626.sol": { - "keccak256": "0x7fcd5b97c2709dee4520e1916e1149e5deabdef9fc043f974671d96b00f36125", + "keccak256": "0x2c9256fdeea7afef9ae475c239dddb84295689344d20134ac1d0f68dae363237", "urls": [ - "bzz-raw://779e9e8f3c8f2ec813314c1d23e342206416078a0258e06fad21f33a5ab44dff", - "dweb:/ipfs/QmTtFSnn57NtyyPcxj3ZLDbYtnzdSieFD6Btm61LtVy34o" + "bzz-raw://c78dd4a1f667c8d873af1100c852ae8ebb6a50987599587a595a9a5757eea52a", + "dweb:/ipfs/QmUTqPLg3t7Mfa844vYxMP2oDadCGtiWxP22BRhs69KyVQ" ], "license": "Apache-2.0" }, @@ -1815,31 +1815,31 @@ }, "ast": { "absolutePath": "contracts/test/MockERC4626.sol", - "id": 11594, + "id": 13344, "exportedSymbols": { "ERC20": [ - 44231 + 62355 ], "ERC20Mintable": [ - 11242 + 12988 ], "ERC4626": [ - 43843 + 61967 ], "FixedPointMath": [ - 7788 + 8263 ], "MockERC4626": [ - 11593 + 13343 ] }, "nodeType": "SourceUnit", - "src": "39:2861:43", + "src": "39:2906:39", "nodes": [ { - "id": 11364, + "id": 13110, "nodeType": "PragmaDirective", - "src": "39:23:43", + "src": "39:23:39", "nodes": [], "literals": [ "solidity", @@ -1848,24 +1848,24 @@ ] }, { - "id": 11366, + "id": 13112, "nodeType": "ImportDirective", - "src": "64:49:43", + "src": "64:49:39", "nodes": [], "absolutePath": "lib/solmate/src/tokens/ERC20.sol", "file": "solmate/tokens/ERC20.sol", "nameLocation": "-1:-1:-1", - "scope": 11594, - "sourceUnit": 44232, + "scope": 13344, + "sourceUnit": 62356, "symbolAliases": [ { "foreign": { - "id": 11365, + "id": 13111, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44231, - "src": "73:5:43", + "referencedDeclaration": 62355, + "src": "73:5:39", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1874,24 +1874,24 @@ "unitAlias": "" }, { - "id": 11368, + "id": 13114, "nodeType": "ImportDirective", - "src": "114:53:43", + "src": "114:53:39", "nodes": [], "absolutePath": "lib/solmate/src/mixins/ERC4626.sol", "file": "solmate/mixins/ERC4626.sol", "nameLocation": "-1:-1:-1", - "scope": 11594, - "sourceUnit": 43844, + "scope": 13344, + "sourceUnit": 61968, "symbolAliases": [ { "foreign": { - "id": 11367, + "id": 13113, "name": "ERC4626", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43843, - "src": "123:7:43", + "referencedDeclaration": 61967, + "src": "123:7:39", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1900,24 +1900,24 @@ "unitAlias": "" }, { - "id": 11370, + "id": 13116, "nodeType": "ImportDirective", - "src": "168:69:43", + "src": "168:69:39", "nodes": [], "absolutePath": "contracts/src/libraries/FixedPointMath.sol", "file": "../src/libraries/FixedPointMath.sol", "nameLocation": "-1:-1:-1", - "scope": 11594, - "sourceUnit": 7789, + "scope": 13344, + "sourceUnit": 8264, "symbolAliases": [ { "foreign": { - "id": 11369, + "id": 13115, "name": "FixedPointMath", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 7788, - "src": "177:14:43", + "referencedDeclaration": 8263, + "src": "177:14:39", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1926,24 +1926,24 @@ "unitAlias": "" }, { - "id": 11372, + "id": 13118, "nodeType": "ImportDirective", - "src": "238:52:43", + "src": "238:52:39", "nodes": [], "absolutePath": "contracts/test/ERC20Mintable.sol", "file": "./ERC20Mintable.sol", "nameLocation": "-1:-1:-1", - "scope": 11594, - "sourceUnit": 11243, + "scope": 13344, + "sourceUnit": 12989, "symbolAliases": [ { "foreign": { - "id": 11371, + "id": 13117, "name": "ERC20Mintable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11242, - "src": "247:13:43", + "referencedDeclaration": 12988, + "src": "247:13:39", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" @@ -1952,31 +1952,31 @@ "unitAlias": "" }, { - "id": 11593, + "id": 13343, "nodeType": "ContractDefinition", - "src": "824:2075:43", + "src": "824:2120:39", "nodes": [ { - "id": 11378, + "id": 13124, "nodeType": "UsingForDirective", - "src": "862:33:43", + "src": "862:33:39", "nodes": [], "global": false, "libraryName": { - "id": 11376, + "id": 13122, "name": "FixedPointMath", "nameLocations": [ - "868:14:43" + "868:14:39" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 7788, - "src": "868:14:43" + "referencedDeclaration": 8263, + "src": "868:14:39" }, "typeName": { - "id": 11377, + "id": 13123, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "887:7:43", + "src": "887:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1984,15 +1984,15 @@ } }, { - "id": 11380, + "id": 13126, "nodeType": "VariableDeclaration", - "src": "901:22:43", + "src": "901:22:39", "nodes": [], "constant": false, "mutability": "mutable", "name": "_rate", - "nameLocation": "918:5:43", - "scope": 11593, + "nameLocation": "918:5:39", + "scope": 13343, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2000,10 +2000,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11379, + "id": 13125, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "901:7:43", + "src": "901:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2012,15 +2012,15 @@ "visibility": "internal" }, { - "id": 11382, + "id": 13128, "nodeType": "VariableDeclaration", - "src": "929:29:43", + "src": "929:29:39", "nodes": [], "constant": false, "mutability": "mutable", "name": "_lastUpdated", - "nameLocation": "946:12:43", - "scope": 11593, + "nameLocation": "946:12:39", + "scope": 13343, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2028,10 +2028,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11381, + "id": 13127, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "929:7:43", + "src": "929:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2040,30 +2040,30 @@ "visibility": "internal" }, { - "id": 11414, + "id": 13160, "nodeType": "FunctionDefinition", - "src": "965:263:43", + "src": "965:263:39", "nodes": [], "body": { - "id": 11413, + "id": 13159, "nodeType": "Block", - "src": "1151:77:43", + "src": "1151:77:39", "nodes": [], "statements": [ { "expression": { - "id": 11406, + "id": 13152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 11404, + "id": 13150, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11380, - "src": "1161:5:43", + "referencedDeclaration": 13126, + "src": "1161:5:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2072,41 +2072,41 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 11405, + "id": 13151, "name": "_initialRate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11391, - "src": "1169:12:43", + "referencedDeclaration": 13137, + "src": "1169:12:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1161:20:43", + "src": "1161:20:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11407, + "id": 13153, "nodeType": "ExpressionStatement", - "src": "1161:20:43" + "src": "1161:20:39" }, { "expression": { - "id": 11411, + "id": 13157, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 11408, + "id": 13154, "name": "_lastUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11382, - "src": "1191:12:43", + "referencedDeclaration": 13128, + "src": "1191:12:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2116,40 +2116,40 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 11409, + "id": 13155, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "1206:5:43", + "src": "1206:5:39", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 11410, + "id": 13156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1212:9:43", + "memberLocation": "1212:9:39", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "1206:15:43", + "src": "1206:15:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1191:30:43", + "src": "1191:30:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11412, + "id": 13158, "nodeType": "ExpressionStatement", - "src": "1191:30:43" + "src": "1191:30:39" } ] }, @@ -2163,14 +2163,14 @@ { "arguments": [ { - "id": 11397, + "id": 13143, "name": "_asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11385, - "src": "1125:6:43", + "referencedDeclaration": 13131, + "src": "1125:6:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$11242", + "typeIdentifier": "t_contract$_ERC20Mintable_$12988", "typeString": "contract ERC20Mintable" } } @@ -2178,30 +2178,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20Mintable_$11242", + "typeIdentifier": "t_contract$_ERC20Mintable_$12988", "typeString": "contract ERC20Mintable" } ], - "id": 11396, + "id": 13142, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1117:7:43", + "src": "1117:7:39", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 11395, + "id": 13141, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1117:7:43", + "src": "1117:7:39", "typeDescriptions": {} } }, - "id": 11398, + "id": 13144, "isConstant": false, "isLValue": false, "isPure": false, @@ -2210,7 +2210,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1117:15:43", + "src": "1117:15:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -2225,18 +2225,18 @@ "typeString": "address" } ], - "id": 11394, + "id": 13140, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 44231, - "src": "1111:5:43", + "referencedDeclaration": 62355, + "src": "1111:5:39", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$44231_$", + "typeIdentifier": "t_type$_t_contract$_ERC20_$62355_$", "typeString": "type(contract ERC20)" } }, - "id": 11399, + "id": 13145, "isConstant": false, "isLValue": false, "isPure": false, @@ -2245,92 +2245,92 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1111:22:43", + "src": "1111:22:39", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$44231", + "typeIdentifier": "t_contract$_ERC20_$62355", "typeString": "contract ERC20" } }, { - "id": 11400, + "id": 13146, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11387, - "src": "1135:5:43", + "referencedDeclaration": 13133, + "src": "1135:5:39", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { - "id": 11401, + "id": 13147, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11389, - "src": "1142:7:43", + "referencedDeclaration": 13135, + "src": "1142:7:39", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], - "id": 11402, + "id": 13148, "kind": "baseConstructorSpecifier", "modifierName": { - "id": 11393, + "id": 13139, "name": "ERC4626", "nameLocations": [ - "1103:7:43" + "1103:7:39" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 43843, - "src": "1103:7:43" + "referencedDeclaration": 61967, + "src": "1103:7:39" }, "nodeType": "ModifierInvocation", - "src": "1103:47:43" + "src": "1103:47:39" } ], "name": "", "nameLocation": "-1:-1:-1", "parameters": { - "id": 11392, + "id": 13138, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11385, + "id": 13131, "mutability": "mutable", "name": "_asset", - "nameLocation": "1000:6:43", + "nameLocation": "1000:6:39", "nodeType": "VariableDeclaration", - "scope": 11414, - "src": "986:20:43", + "scope": 13160, + "src": "986:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$11242", + "typeIdentifier": "t_contract$_ERC20Mintable_$12988", "typeString": "contract ERC20Mintable" }, "typeName": { - "id": 11384, + "id": 13130, "nodeType": "UserDefinedTypeName", "pathNode": { - "id": 11383, + "id": 13129, "name": "ERC20Mintable", "nameLocations": [ - "986:13:43" + "986:13:39" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 11242, - "src": "986:13:43" + "referencedDeclaration": 12988, + "src": "986:13:39" }, - "referencedDeclaration": 11242, - "src": "986:13:43", + "referencedDeclaration": 12988, + "src": "986:13:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$11242", + "typeIdentifier": "t_contract$_ERC20Mintable_$12988", "typeString": "contract ERC20Mintable" } }, @@ -2338,13 +2338,13 @@ }, { "constant": false, - "id": 11387, + "id": 13133, "mutability": "mutable", "name": "_name", - "nameLocation": "1030:5:43", + "nameLocation": "1030:5:39", "nodeType": "VariableDeclaration", - "scope": 11414, - "src": "1016:19:43", + "scope": 13160, + "src": "1016:19:39", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2352,10 +2352,10 @@ "typeString": "string" }, "typeName": { - "id": 11386, + "id": 13132, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1016:6:43", + "src": "1016:6:39", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2365,13 +2365,13 @@ }, { "constant": false, - "id": 11389, + "id": 13135, "mutability": "mutable", "name": "_symbol", - "nameLocation": "1059:7:43", + "nameLocation": "1059:7:39", "nodeType": "VariableDeclaration", - "scope": 11414, - "src": "1045:21:43", + "scope": 13160, + "src": "1045:21:39", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2379,10 +2379,10 @@ "typeString": "string" }, "typeName": { - "id": 11388, + "id": 13134, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1045:6:43", + "src": "1045:6:39", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2392,13 +2392,13 @@ }, { "constant": false, - "id": 11391, + "id": 13137, "mutability": "mutable", "name": "_initialRate", - "nameLocation": "1084:12:43", + "nameLocation": "1084:12:39", "nodeType": "VariableDeclaration", - "scope": 11414, - "src": "1076:20:43", + "scope": 13160, + "src": "1076:20:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2406,10 +2406,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11390, + "id": 13136, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1076:7:43", + "src": "1076:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2418,28 +2418,28 @@ "visibility": "internal" } ], - "src": "976:126:43" + "src": "976:126:39" }, "returnParameters": { - "id": 11403, + "id": 13149, "nodeType": "ParameterList", "parameters": [], - "src": "1151:0:43" + "src": "1151:0:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 11435, + "id": 13181, "nodeType": "FunctionDefinition", - "src": "1257:185:43", + "src": "1257:185:39", "nodes": [], "body": { - "id": 11434, + "id": 13180, "nodeType": "Block", - "src": "1366:76:43", + "src": "1366:76:39", "nodes": [], "statements": [ { @@ -2447,18 +2447,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11425, + "id": 13171, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11561, - "src": "1376:7:43", + "referencedDeclaration": 13307, + "src": "1376:7:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 11426, + "id": 13172, "isConstant": false, "isLValue": false, "isPure": false, @@ -2467,39 +2467,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1376:9:43", + "src": "1376:9:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 11427, + "id": 13173, "nodeType": "ExpressionStatement", - "src": "1376:9:43" + "src": "1376:9:39" }, { "expression": { "arguments": [ { - "id": 11430, + "id": 13176, "name": "_assets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11417, - "src": "1416:7:43", + "referencedDeclaration": 13163, + "src": "1416:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 11431, + "id": 13177, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11419, - "src": "1425:9:43", + "referencedDeclaration": 13165, + "src": "1425:9:39", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2518,33 +2518,33 @@ } ], "expression": { - "id": 11428, + "id": 13174, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1402:5:43", + "src": "1402:5:39", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$11593_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13343_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 11429, + "id": 13175, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1408:7:43", + "memberLocation": "1408:7:39", "memberName": "deposit", "nodeType": "MemberAccess", - "referencedDeclaration": 43439, - "src": "1402:13:43", + "referencedDeclaration": 61563, + "src": "1402:13:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address) returns (uint256)" } }, - "id": 11432, + "id": 13178, "isConstant": false, "isLValue": false, "isPure": false, @@ -2553,27 +2553,27 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1402:33:43", + "src": "1402:33:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11424, - "id": 11433, + "functionReturnParameters": 13170, + "id": 13179, "nodeType": "Return", - "src": "1395:40:43" + "src": "1395:40:39" } ] }, "baseFunctions": [ - 43439 + 61563 ], "documentation": { - "id": 11415, + "id": 13161, "nodeType": "StructuredDocumentation", - "src": "1234:18:43", + "src": "1234:18:39", "text": "Overrides ///" }, "functionSelector": "6e553f65", @@ -2581,26 +2581,26 @@ "kind": "function", "modifiers": [], "name": "deposit", - "nameLocation": "1266:7:43", + "nameLocation": "1266:7:39", "overrides": { - "id": 11421, + "id": 13167, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1339:8:43" + "src": "1339:8:39" }, "parameters": { - "id": 11420, + "id": 13166, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11417, + "id": 13163, "mutability": "mutable", "name": "_assets", - "nameLocation": "1291:7:43", + "nameLocation": "1291:7:39", "nodeType": "VariableDeclaration", - "scope": 11435, - "src": "1283:15:43", + "scope": 13181, + "src": "1283:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2608,10 +2608,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11416, + "id": 13162, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1283:7:43", + "src": "1283:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2621,13 +2621,13 @@ }, { "constant": false, - "id": 11419, + "id": 13165, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1316:9:43", + "nameLocation": "1316:9:39", "nodeType": "VariableDeclaration", - "scope": 11435, - "src": "1308:17:43", + "scope": 13181, + "src": "1308:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2635,10 +2635,10 @@ "typeString": "address" }, "typeName": { - "id": 11418, + "id": 13164, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1308:7:43", + "src": "1308:7:39", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2648,21 +2648,21 @@ "visibility": "internal" } ], - "src": "1273:58:43" + "src": "1273:58:39" }, "returnParameters": { - "id": 11424, + "id": 13170, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11423, + "id": 13169, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11435, - "src": "1357:7:43", + "scope": 13181, + "src": "1357:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2670,10 +2670,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11422, + "id": 13168, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1357:7:43", + "src": "1357:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2682,22 +2682,22 @@ "visibility": "internal" } ], - "src": "1356:9:43" + "src": "1356:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 11455, + "id": 13201, "nodeType": "FunctionDefinition", - "src": "1448:179:43", + "src": "1448:179:39", "nodes": [], "body": { - "id": 11454, + "id": 13200, "nodeType": "Block", - "src": "1554:73:43", + "src": "1554:73:39", "nodes": [], "statements": [ { @@ -2705,18 +2705,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11445, + "id": 13191, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11561, - "src": "1564:7:43", + "referencedDeclaration": 13307, + "src": "1564:7:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 11446, + "id": 13192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2725,39 +2725,39 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1564:9:43", + "src": "1564:9:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 11447, + "id": 13193, "nodeType": "ExpressionStatement", - "src": "1564:9:43" + "src": "1564:9:39" }, { "expression": { "arguments": [ { - "id": 11450, + "id": 13196, "name": "_shares", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11437, - "src": "1601:7:43", + "referencedDeclaration": 13183, + "src": "1601:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 11451, + "id": 13197, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11439, - "src": "1610:9:43", + "referencedDeclaration": 13185, + "src": "1610:9:39", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2776,33 +2776,33 @@ } ], "expression": { - "id": 11448, + "id": 13194, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1590:5:43", + "src": "1590:5:39", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$11593_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13343_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 11449, + "id": 13195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1596:4:43", + "memberLocation": "1596:4:39", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 43485, - "src": "1590:10:43", + "referencedDeclaration": 61609, + "src": "1590:10:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address) returns (uint256)" } }, - "id": 11452, + "id": 13198, "isConstant": false, "isLValue": false, "isPure": false, @@ -2811,48 +2811,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1590:30:43", + "src": "1590:30:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11444, - "id": 11453, + "functionReturnParameters": 13190, + "id": 13199, "nodeType": "Return", - "src": "1583:37:43" + "src": "1583:37:39" } ] }, "baseFunctions": [ - 43485 + 61609 ], "functionSelector": "94bf804d", "implemented": true, "kind": "function", "modifiers": [], "name": "mint", - "nameLocation": "1457:4:43", + "nameLocation": "1457:4:39", "overrides": { - "id": 11441, + "id": 13187, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1527:8:43" + "src": "1527:8:39" }, "parameters": { - "id": 11440, + "id": 13186, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11437, + "id": 13183, "mutability": "mutable", "name": "_shares", - "nameLocation": "1479:7:43", + "nameLocation": "1479:7:39", "nodeType": "VariableDeclaration", - "scope": 11455, - "src": "1471:15:43", + "scope": 13201, + "src": "1471:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2860,10 +2860,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11436, + "id": 13182, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1471:7:43", + "src": "1471:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2873,13 +2873,13 @@ }, { "constant": false, - "id": 11439, + "id": 13185, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1504:9:43", + "nameLocation": "1504:9:39", "nodeType": "VariableDeclaration", - "scope": 11455, - "src": "1496:17:43", + "scope": 13201, + "src": "1496:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2887,10 +2887,10 @@ "typeString": "address" }, "typeName": { - "id": 11438, + "id": 13184, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1496:7:43", + "src": "1496:7:39", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2900,21 +2900,21 @@ "visibility": "internal" } ], - "src": "1461:58:43" + "src": "1461:58:39" }, "returnParameters": { - "id": 11444, + "id": 13190, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11443, + "id": 13189, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11455, - "src": "1545:7:43", + "scope": 13201, + "src": "1545:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2922,10 +2922,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11442, + "id": 13188, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1545:7:43", + "src": "1545:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2934,22 +2934,22 @@ "visibility": "internal" } ], - "src": "1544:9:43" + "src": "1544:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 11478, + "id": 13224, "nodeType": "FunctionDefinition", - "src": "1633:219:43", + "src": "1633:219:39", "nodes": [], "body": { - "id": 11477, + "id": 13223, "nodeType": "Block", - "src": "1767:85:43", + "src": "1767:85:39", "nodes": [], "statements": [ { @@ -2957,18 +2957,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11467, + "id": 13213, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11561, - "src": "1777:7:43", + "referencedDeclaration": 13307, + "src": "1777:7:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 11468, + "id": 13214, "isConstant": false, "isLValue": false, "isPure": false, @@ -2977,51 +2977,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1777:9:43", + "src": "1777:9:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 11469, + "id": 13215, "nodeType": "ExpressionStatement", - "src": "1777:9:43" + "src": "1777:9:39" }, { "expression": { "arguments": [ { - "id": 11472, + "id": 13218, "name": "_assets", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11457, - "src": "1818:7:43", + "referencedDeclaration": 13203, + "src": "1818:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 11473, + "id": 13219, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11459, - "src": "1827:9:43", + "referencedDeclaration": 13205, + "src": "1827:9:39", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 11474, + "id": 13220, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11461, - "src": "1838:6:43", + "referencedDeclaration": 13207, + "src": "1838:6:39", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3044,33 +3044,33 @@ } ], "expression": { - "id": 11470, + "id": 13216, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "1803:5:43", + "src": "1803:5:39", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$11593_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13343_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 11471, + "id": 13217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1809:8:43", + "memberLocation": "1809:8:39", "memberName": "withdraw", "nodeType": "MemberAccess", - "referencedDeclaration": 43563, - "src": "1803:14:43", + "referencedDeclaration": 61687, + "src": "1803:14:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address,address) returns (uint256)" } }, - "id": 11475, + "id": 13221, "isConstant": false, "isLValue": false, "isPure": false, @@ -3079,48 +3079,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1803:42:43", + "src": "1803:42:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11466, - "id": 11476, + "functionReturnParameters": 13212, + "id": 13222, "nodeType": "Return", - "src": "1796:49:43" + "src": "1796:49:39" } ] }, "baseFunctions": [ - 43563 + 61687 ], "functionSelector": "b460af94", "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", - "nameLocation": "1642:8:43", + "nameLocation": "1642:8:39", "overrides": { - "id": 11463, + "id": 13209, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1740:8:43" + "src": "1740:8:39" }, "parameters": { - "id": 11462, + "id": 13208, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11457, + "id": 13203, "mutability": "mutable", "name": "_assets", - "nameLocation": "1668:7:43", + "nameLocation": "1668:7:39", "nodeType": "VariableDeclaration", - "scope": 11478, - "src": "1660:15:43", + "scope": 13224, + "src": "1660:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3128,10 +3128,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11456, + "id": 13202, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1660:7:43", + "src": "1660:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3141,13 +3141,13 @@ }, { "constant": false, - "id": 11459, + "id": 13205, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1693:9:43", + "nameLocation": "1693:9:39", "nodeType": "VariableDeclaration", - "scope": 11478, - "src": "1685:17:43", + "scope": 13224, + "src": "1685:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3155,10 +3155,10 @@ "typeString": "address" }, "typeName": { - "id": 11458, + "id": 13204, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1685:7:43", + "src": "1685:7:39", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3169,13 +3169,13 @@ }, { "constant": false, - "id": 11461, + "id": 13207, "mutability": "mutable", "name": "_owner", - "nameLocation": "1720:6:43", + "nameLocation": "1720:6:39", "nodeType": "VariableDeclaration", - "scope": 11478, - "src": "1712:14:43", + "scope": 13224, + "src": "1712:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3183,10 +3183,10 @@ "typeString": "address" }, "typeName": { - "id": 11460, + "id": 13206, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1712:7:43", + "src": "1712:7:39", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3196,21 +3196,21 @@ "visibility": "internal" } ], - "src": "1650:82:43" + "src": "1650:82:39" }, "returnParameters": { - "id": 11466, + "id": 13212, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11465, + "id": 13211, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11478, - "src": "1758:7:43", + "scope": 13224, + "src": "1758:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3218,10 +3218,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11464, + "id": 13210, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1758:7:43", + "src": "1758:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3230,22 +3230,22 @@ "visibility": "internal" } ], - "src": "1757:9:43" + "src": "1757:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 11501, + "id": 13247, "nodeType": "FunctionDefinition", - "src": "1858:215:43", + "src": "1858:215:39", "nodes": [], "body": { - "id": 11500, + "id": 13246, "nodeType": "Block", - "src": "1990:83:43", + "src": "1990:83:39", "nodes": [], "statements": [ { @@ -3253,18 +3253,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11490, + "id": 13236, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11561, - "src": "2000:7:43", + "referencedDeclaration": 13307, + "src": "2000:7:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 11491, + "id": 13237, "isConstant": false, "isLValue": false, "isPure": false, @@ -3273,51 +3273,51 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2000:9:43", + "src": "2000:9:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 11492, + "id": 13238, "nodeType": "ExpressionStatement", - "src": "2000:9:43" + "src": "2000:9:39" }, { "expression": { "arguments": [ { - "id": 11495, + "id": 13241, "name": "_shares", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11480, - "src": "2039:7:43", + "referencedDeclaration": 13226, + "src": "2039:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { - "id": 11496, + "id": 13242, "name": "_receiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11482, - "src": "2048:9:43", + "referencedDeclaration": 13228, + "src": "2048:9:39", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 11497, + "id": 13243, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11484, - "src": "2059:6:43", + "referencedDeclaration": 13230, + "src": "2059:6:39", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3340,33 +3340,33 @@ } ], "expression": { - "id": 11493, + "id": 13239, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, - "src": "2026:5:43", + "src": "2026:5:39", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_MockERC4626_$11593_$", + "typeIdentifier": "t_type$_t_super$_MockERC4626_$13343_$", "typeString": "type(contract super MockERC4626)" } }, - "id": 11494, + "id": 13240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2032:6:43", + "memberLocation": "2032:6:39", "memberName": "redeem", "nodeType": "MemberAccess", - "referencedDeclaration": 43647, - "src": "2026:12:43", + "referencedDeclaration": 61771, + "src": "2026:12:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", "typeString": "function (uint256,address,address) returns (uint256)" } }, - "id": 11498, + "id": 13244, "isConstant": false, "isLValue": false, "isPure": false, @@ -3375,48 +3375,48 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2026:40:43", + "src": "2026:40:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11489, - "id": 11499, + "functionReturnParameters": 13235, + "id": 13245, "nodeType": "Return", - "src": "2019:47:43" + "src": "2019:47:39" } ] }, "baseFunctions": [ - 43647 + 61771 ], "functionSelector": "ba087652", "implemented": true, "kind": "function", "modifiers": [], "name": "redeem", - "nameLocation": "1867:6:43", + "nameLocation": "1867:6:39", "overrides": { - "id": 11486, + "id": 13232, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1963:8:43" + "src": "1963:8:39" }, "parameters": { - "id": 11485, + "id": 13231, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11480, + "id": 13226, "mutability": "mutable", "name": "_shares", - "nameLocation": "1891:7:43", + "nameLocation": "1891:7:39", "nodeType": "VariableDeclaration", - "scope": 11501, - "src": "1883:15:43", + "scope": 13247, + "src": "1883:15:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3424,10 +3424,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11479, + "id": 13225, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1883:7:43", + "src": "1883:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3437,13 +3437,13 @@ }, { "constant": false, - "id": 11482, + "id": 13228, "mutability": "mutable", "name": "_receiver", - "nameLocation": "1916:9:43", + "nameLocation": "1916:9:39", "nodeType": "VariableDeclaration", - "scope": 11501, - "src": "1908:17:43", + "scope": 13247, + "src": "1908:17:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3451,10 +3451,10 @@ "typeString": "address" }, "typeName": { - "id": 11481, + "id": 13227, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1908:7:43", + "src": "1908:7:39", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3465,13 +3465,13 @@ }, { "constant": false, - "id": 11484, + "id": 13230, "mutability": "mutable", "name": "_owner", - "nameLocation": "1943:6:43", + "nameLocation": "1943:6:39", "nodeType": "VariableDeclaration", - "scope": 11501, - "src": "1935:14:43", + "scope": 13247, + "src": "1935:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3479,10 +3479,10 @@ "typeString": "address" }, "typeName": { - "id": 11483, + "id": 13229, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1935:7:43", + "src": "1935:7:39", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3492,21 +3492,21 @@ "visibility": "internal" } ], - "src": "1873:82:43" + "src": "1873:82:39" }, "returnParameters": { - "id": 11489, + "id": 13235, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11488, + "id": 13234, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11501, - "src": "1981:7:43", + "scope": 13247, + "src": "1981:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3514,10 +3514,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11487, + "id": 13233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1981:7:43", + "src": "1981:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3526,22 +3526,22 @@ "visibility": "internal" } ], - "src": "1980:9:43" + "src": "1980:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { - "id": 11519, + "id": 13265, "nodeType": "FunctionDefinition", - "src": "2079:140:43", + "src": "2079:140:39", "nodes": [], "body": { - "id": 11518, + "id": 13264, "nodeType": "Block", - "src": "2141:78:43", + "src": "2141:78:39", "nodes": [], "statements": [ { @@ -3550,7 +3550,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 11516, + "id": 13262, "isConstant": false, "isLValue": false, "isPure": false, @@ -3560,14 +3560,14 @@ { "arguments": [ { - "id": 11511, + "id": 13257, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "2182:4:43", + "src": "2182:4:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC4626_$11593", + "typeIdentifier": "t_contract$_MockERC4626_$13343", "typeString": "contract MockERC4626" } } @@ -3575,30 +3575,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC4626_$11593", + "typeIdentifier": "t_contract$_MockERC4626_$13343", "typeString": "contract MockERC4626" } ], - "id": 11510, + "id": 13256, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2174:7:43", + "src": "2174:7:39", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 11509, + "id": 13255, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2174:7:43", + "src": "2174:7:39", "typeDescriptions": {} } }, - "id": 11512, + "id": 13258, "isConstant": false, "isLValue": false, "isPure": false, @@ -3607,7 +3607,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2174:13:43", + "src": "2174:13:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -3623,33 +3623,33 @@ } ], "expression": { - "id": 11507, + "id": 13253, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43365, - "src": "2158:5:43", + "referencedDeclaration": 61489, + "src": "2158:5:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$44231", + "typeIdentifier": "t_contract$_ERC20_$62355", "typeString": "contract ERC20" } }, - "id": 11508, + "id": 13254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2164:9:43", + "memberLocation": "2164:9:39", "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 43874, - "src": "2158:15:43", + "referencedDeclaration": 61998, + "src": "2158:15:39", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 11513, + "id": 13259, "isConstant": false, "isLValue": false, "isPure": false, @@ -3658,7 +3658,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2158:30:43", + "src": "2158:30:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3671,18 +3671,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11514, + "id": 13260, "name": "_getAccruedInterest", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11592, - "src": "2191:19:43", + "referencedDeclaration": 13342, + "src": "2191:19:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 11515, + "id": 13261, "isConstant": false, "isLValue": false, "isPure": false, @@ -3691,60 +3691,60 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2191:21:43", + "src": "2191:21:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2158:54:43", + "src": "2158:54:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11506, - "id": 11517, + "functionReturnParameters": 13252, + "id": 13263, "nodeType": "Return", - "src": "2151:61:43" + "src": "2151:61:39" } ] }, "baseFunctions": [ - 43652 + 61776 ], "functionSelector": "01e1d114", "implemented": true, "kind": "function", "modifiers": [], "name": "totalAssets", - "nameLocation": "2088:11:43", + "nameLocation": "2088:11:39", "overrides": { - "id": 11503, + "id": 13249, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "2114:8:43" + "src": "2114:8:39" }, "parameters": { - "id": 11502, + "id": 13248, "nodeType": "ParameterList", "parameters": [], - "src": "2099:2:43" + "src": "2099:2:39" }, "returnParameters": { - "id": 11506, + "id": 13252, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11505, + "id": 13251, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11519, - "src": "2132:7:43", + "scope": 13265, + "src": "2132:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3752,10 +3752,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11504, + "id": 13250, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2132:7:43", + "src": "2132:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3764,22 +3764,22 @@ "visibility": "internal" } ], - "src": "2131:9:43" + "src": "2131:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "view", "virtual": false, "visibility": "public" }, { - "id": 11533, + "id": 13279, "nodeType": "FunctionDefinition", - "src": "2243:92:43", + "src": "2243:92:39", "nodes": [], "body": { - "id": 11532, + "id": 13278, "nodeType": "Block", - "src": "2285:50:43", + "src": "2285:50:39", "nodes": [], "statements": [ { @@ -3787,18 +3787,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11525, + "id": 13271, "name": "_accrue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11561, - "src": "2295:7:43", + "referencedDeclaration": 13307, + "src": "2295:7:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 11526, + "id": 13272, "isConstant": false, "isLValue": false, "isPure": false, @@ -3807,31 +3807,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2295:9:43", + "src": "2295:9:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 11527, + "id": 13273, "nodeType": "ExpressionStatement", - "src": "2295:9:43" + "src": "2295:9:39" }, { "expression": { - "id": 11530, + "id": 13276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 11528, + "id": 13274, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11380, - "src": "2314:5:43", + "referencedDeclaration": 13126, + "src": "2314:5:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3840,33 +3840,33 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { - "id": 11529, + "id": 13275, "name": "_rate_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11522, - "src": "2322:6:43", + "referencedDeclaration": 13268, + "src": "2322:6:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2314:14:43", + "src": "2314:14:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11531, + "id": 13277, "nodeType": "ExpressionStatement", - "src": "2314:14:43" + "src": "2314:14:39" } ] }, "documentation": { - "id": 11520, + "id": 13266, "nodeType": "StructuredDocumentation", - "src": "2225:13:43", + "src": "2225:13:39", "text": "Mock ///" }, "functionSelector": "34fcf437", @@ -3874,20 +3874,20 @@ "kind": "function", "modifiers": [], "name": "setRate", - "nameLocation": "2252:7:43", + "nameLocation": "2252:7:39", "parameters": { - "id": 11523, + "id": 13269, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11522, + "id": 13268, "mutability": "mutable", "name": "_rate_", - "nameLocation": "2268:6:43", + "nameLocation": "2268:6:39", "nodeType": "VariableDeclaration", - "scope": 11533, - "src": "2260:14:43", + "scope": 13279, + "src": "2260:14:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3895,10 +3895,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11521, + "id": 13267, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2260:7:43", + "src": "2260:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3907,47 +3907,47 @@ "visibility": "internal" } ], - "src": "2259:16:43" + "src": "2259:16:39" }, "returnParameters": { - "id": 11524, + "id": 13270, "nodeType": "ParameterList", "parameters": [], - "src": "2285:0:43" + "src": "2285:0:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { - "id": 11541, + "id": 13287, "nodeType": "FunctionDefinition", - "src": "2341:80:43", + "src": "2341:80:39", "nodes": [], "body": { - "id": 11540, + "id": 13286, "nodeType": "Block", - "src": "2392:29:43", + "src": "2392:29:39", "nodes": [], "statements": [ { "expression": { - "id": 11538, + "id": 13284, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11380, - "src": "2409:5:43", + "referencedDeclaration": 13126, + "src": "2409:5:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11537, - "id": 11539, + "functionReturnParameters": 13283, + "id": 13285, "nodeType": "Return", - "src": "2402:12:43" + "src": "2402:12:39" } ] }, @@ -3956,26 +3956,26 @@ "kind": "function", "modifiers": [], "name": "getRate", - "nameLocation": "2350:7:43", + "nameLocation": "2350:7:39", "parameters": { - "id": 11534, + "id": 13280, "nodeType": "ParameterList", "parameters": [], - "src": "2357:2:43" + "src": "2357:2:39" }, "returnParameters": { - "id": 11537, + "id": 13283, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11536, + "id": 13282, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11541, - "src": "2383:7:43", + "scope": 13287, + "src": "2383:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3983,10 +3983,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11535, + "id": 13281, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2383:7:43", + "src": "2383:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3995,22 +3995,22 @@ "visibility": "internal" } ], - "src": "2382:9:43" + "src": "2382:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "view", "virtual": false, "visibility": "external" }, { - "id": 11561, + "id": 13307, "nodeType": "FunctionDefinition", - "src": "2427:142:43", + "src": "2427:142:39", "nodes": [], "body": { - "id": 11560, + "id": 13306, "nodeType": "Block", - "src": "2455:114:43", + "src": "2455:114:39", "nodes": [], "statements": [ { @@ -4020,18 +4020,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 11551, + "id": 13297, "name": "_getAccruedInterest", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11592, - "src": "2500:19:43", + "referencedDeclaration": 13342, + "src": "2500:19:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 11552, + "id": 13298, "isConstant": false, "isLValue": false, "isPure": false, @@ -4040,7 +4040,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2500:21:43", + "src": "2500:21:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4060,14 +4060,14 @@ { "arguments": [ { - "id": 11547, + "id": 13293, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43365, - "src": "2487:5:43", + "referencedDeclaration": 61489, + "src": "2487:5:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$44231", + "typeIdentifier": "t_contract$_ERC20_$62355", "typeString": "contract ERC20" } } @@ -4075,30 +4075,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20_$44231", + "typeIdentifier": "t_contract$_ERC20_$62355", "typeString": "contract ERC20" } ], - "id": 11546, + "id": 13292, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2479:7:43", + "src": "2479:7:39", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 11545, + "id": 13291, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2479:7:43", + "src": "2479:7:39", "typeDescriptions": {} } }, - "id": 11548, + "id": 13294, "isConstant": false, "isLValue": false, "isPure": false, @@ -4107,7 +4107,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2479:14:43", + "src": "2479:14:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4122,18 +4122,18 @@ "typeString": "address" } ], - "id": 11544, + "id": 13290, "name": "ERC20Mintable", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11242, - "src": "2465:13:43", + "referencedDeclaration": 12988, + "src": "2465:13:39", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$11242_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Mintable_$12988_$", "typeString": "type(contract ERC20Mintable)" } }, - "id": 11549, + "id": 13295, "isConstant": false, "isLValue": false, "isPure": false, @@ -4142,29 +4142,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2465:29:43", + "src": "2465:29:39", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$11242", + "typeIdentifier": "t_contract$_ERC20Mintable_$12988", "typeString": "contract ERC20Mintable" } }, - "id": 11550, + "id": 13296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2495:4:43", + "memberLocation": "2495:4:39", "memberName": "mint", "nodeType": "MemberAccess", - "referencedDeclaration": 11203, - "src": "2465:34:43", + "referencedDeclaration": 12949, + "src": "2465:34:39", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 11553, + "id": 13299, "isConstant": false, "isLValue": false, "isPure": false, @@ -4173,31 +4173,31 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2465:57:43", + "src": "2465:57:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 11554, + "id": 13300, "nodeType": "ExpressionStatement", - "src": "2465:57:43" + "src": "2465:57:39" }, { "expression": { - "id": 11558, + "id": 13304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { - "id": 11555, + "id": 13301, "name": "_lastUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11382, - "src": "2532:12:43", + "referencedDeclaration": 13128, + "src": "2532:12:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4207,40 +4207,40 @@ "operator": "=", "rightHandSide": { "expression": { - "id": 11556, + "id": 13302, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2547:5:43", + "src": "2547:5:39", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 11557, + "id": 13303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2553:9:43", + "memberLocation": "2553:9:39", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2547:15:43", + "src": "2547:15:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2532:30:43", + "src": "2532:30:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11559, + "id": 13305, "nodeType": "ExpressionStatement", - "src": "2532:30:43" + "src": "2532:30:39" } ] }, @@ -4248,49 +4248,49 @@ "kind": "function", "modifiers": [], "name": "_accrue", - "nameLocation": "2436:7:43", + "nameLocation": "2436:7:39", "parameters": { - "id": 11542, + "id": 13288, "nodeType": "ParameterList", "parameters": [], - "src": "2443:2:43" + "src": "2443:2:39" }, "returnParameters": { - "id": 11543, + "id": 13289, "nodeType": "ParameterList", "parameters": [], - "src": "2455:0:43" + "src": "2455:0:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { - "id": 11592, + "id": 13342, "nodeType": "FunctionDefinition", - "src": "2575:322:43", + "src": "2575:367:39", "nodes": [], "body": { - "id": 11591, + "id": 13341, "nodeType": "Block", - "src": "2638:259:43", + "src": "2638:304:39", "nodes": [], "statements": [ { "assignments": [ - 11567 + 13313 ], "declarations": [ { "constant": false, - "id": 11567, + "id": 13313, "mutability": "mutable", "name": "timeElapsed", - "nameLocation": "2709:11:43", + "nameLocation": "2709:11:39", "nodeType": "VariableDeclaration", - "scope": 11591, - "src": "2701:19:43", + "scope": 13341, + "src": "2701:19:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4298,10 +4298,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11566, + "id": 13312, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2701:7:43", + "src": "2701:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4310,19 +4310,19 @@ "visibility": "internal" } ], - "id": 11576, + "id": 13322, "initialValue": { "arguments": [ { "hexValue": "333635", - "id": 11574, + "id": 13320, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2777:8:43", + "src": "2777:8:39", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_31536000_by_1", @@ -4345,33 +4345,33 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 11571, + "id": 13317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 11568, + "id": 13314, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, - "src": "2724:5:43", + "src": "2724:5:39", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, - "id": 11569, + "id": 13315, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2730:9:43", + "memberLocation": "2730:9:39", "memberName": "timestamp", "nodeType": "MemberAccess", - "src": "2724:15:43", + "src": "2724:15:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4380,53 +4380,53 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { - "id": 11570, + "id": 13316, "name": "_lastUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11382, - "src": "2742:12:43", + "referencedDeclaration": 13128, + "src": "2742:12:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2724:30:43", + "src": "2724:30:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 11572, + "id": 13318, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2723:32:43", + "src": "2723:32:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11573, + "id": 13319, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2756:7:43", + "memberLocation": "2756:7:39", "memberName": "divDown", "nodeType": "MemberAccess", - "referencedDeclaration": 7172, - "src": "2723:40:43", + "referencedDeclaration": 7579, + "src": "2723:40:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 11575, + "id": 13321, "isConstant": false, "isLValue": false, "isPure": false, @@ -4435,7 +4435,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2723:72:43", + "src": "2723:72:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4443,20 +4443,53 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2701:94:43" + "src": "2701:94:39" }, { - "expression": { + "assignments": [ + 13324 + ], + "declarations": [ + { + "constant": false, + "id": 13324, + "mutability": "mutable", + "name": "accrued", + "nameLocation": "2813:7:39", + "nodeType": "VariableDeclaration", + "scope": 13341, + "src": "2805:15:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2805:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13338, + "initialValue": { "arguments": [ { "arguments": [ { - "id": 11587, + "id": 13335, "name": "timeElapsed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11567, - "src": "2877:11:43", + "referencedDeclaration": 13313, + "src": "2889:11:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4471,33 +4504,33 @@ } ], "expression": { - "id": 11585, + "id": 13333, "name": "_rate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 11380, - "src": "2863:5:43", + "referencedDeclaration": 13126, + "src": "2875:5:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11586, + "id": 13334, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2869:7:43", + "memberLocation": "2881:7:39", "memberName": "mulDown", "nodeType": "MemberAccess", - "referencedDeclaration": 7154, - "src": "2863:13:43", + "referencedDeclaration": 7561, + "src": "2875:13:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 11588, + "id": 13336, "isConstant": false, "isLValue": false, "isPure": false, @@ -4506,7 +4539,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2863:26:43", + "src": "2875:26:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4526,14 +4559,14 @@ { "arguments": [ { - "id": 11581, + "id": 13329, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, - "src": "2848:4:43", + "src": "2847:4:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_MockERC4626_$11593", + "typeIdentifier": "t_contract$_MockERC4626_$13343", "typeString": "contract MockERC4626" } } @@ -4541,30 +4574,30 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_MockERC4626_$11593", + "typeIdentifier": "t_contract$_MockERC4626_$13343", "typeString": "contract MockERC4626" } ], - "id": 11580, + "id": 13328, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2840:7:43", + "src": "2839:7:39", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 11579, + "id": 13327, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2840:7:43", + "src": "2839:7:39", "typeDescriptions": {} } }, - "id": 11582, + "id": 13330, "isConstant": false, "isLValue": false, "isPure": false, @@ -4573,7 +4606,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2840:13:43", + "src": "2839:13:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -4589,33 +4622,33 @@ } ], "expression": { - "id": 11577, + "id": 13325, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 43365, - "src": "2824:5:43", + "referencedDeclaration": 61489, + "src": "2823:5:39", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$44231", + "typeIdentifier": "t_contract$_ERC20_$62355", "typeString": "contract ERC20" } }, - "id": 11578, + "id": 13326, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2830:9:43", + "memberLocation": "2829:9:39", "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 43874, - "src": "2824:15:43", + "referencedDeclaration": 61998, + "src": "2823:15:39", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 11583, + "id": 13331, "isConstant": false, "isLValue": false, "isPure": false, @@ -4624,29 +4657,29 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2824:30:43", + "src": "2823:30:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 11584, + "id": 13332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "2855:7:43", + "memberLocation": "2854:7:39", "memberName": "mulDown", "nodeType": "MemberAccess", - "referencedDeclaration": 7154, - "src": "2824:38:43", + "referencedDeclaration": 7561, + "src": "2823:38:39", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 11589, + "id": 13337, "isConstant": false, "isLValue": false, "isPure": false, @@ -4655,17 +4688,33 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2824:66:43", + "src": "2823:88:39", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 11565, - "id": 11590, + "nodeType": "VariableDeclarationStatement", + "src": "2805:106:39" + }, + { + "expression": { + "id": 13339, + "name": "accrued", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13324, + "src": "2928:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 13311, + "id": 13340, "nodeType": "Return", - "src": "2805:85:43" + "src": "2921:14:39" } ] }, @@ -4673,26 +4722,26 @@ "kind": "function", "modifiers": [], "name": "_getAccruedInterest", - "nameLocation": "2584:19:43", + "nameLocation": "2584:19:39", "parameters": { - "id": 11562, + "id": 13308, "nodeType": "ParameterList", "parameters": [], - "src": "2603:2:43" + "src": "2603:2:39" }, "returnParameters": { - "id": 11565, + "id": 13311, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 11564, + "id": 13310, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 11592, - "src": "2629:7:43", + "scope": 13342, + "src": "2629:7:39", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4700,10 +4749,10 @@ "typeString": "uint256" }, "typeName": { - "id": 11563, + "id": 13309, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2629:7:43", + "src": "2629:7:39", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4712,9 +4761,9 @@ "visibility": "internal" } ], - "src": "2628:9:43" + "src": "2628:9:39" }, - "scope": 11593, + "scope": 13343, "stateMutability": "view", "virtual": false, "visibility": "internal" @@ -4724,42 +4773,42 @@ "baseContracts": [ { "baseName": { - "id": 11374, + "id": 13120, "name": "ERC4626", "nameLocations": [ - "848:7:43" + "848:7:39" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 43843, - "src": "848:7:43" + "referencedDeclaration": 61967, + "src": "848:7:39" }, - "id": 11375, + "id": 13121, "nodeType": "InheritanceSpecifier", - "src": "848:7:43" + "src": "848:7:39" } ], "canonicalName": "MockERC4626", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 11373, + "id": 13119, "nodeType": "StructuredDocumentation", - "src": "292:532:43", + "src": "292:532:39", "text": "@author DELV\n @title MockERC4626\n @notice This mock yield source will accrue interest at a specified rate\n Every stateful interaction will accrue interest, so the interest\n accrual will approximate continuous compounding as the contract\n is called more frequently.\n @custom:disclaimer The language used in this code is for coding convenience\n only, and is not intended to, and does not, have any\n particular legal or regulatory significance." }, "fullyImplemented": true, "linearizedBaseContracts": [ - 11593, - 43843, - 44231 + 13343, + 61967, + 62355 ], "name": "MockERC4626", - "nameLocation": "833:11:43", - "scope": 11594, + "nameLocation": "833:11:39", + "scope": 13344, "usedErrors": [] } ], "license": "Apache-2.0" }, - "id": 43 + "id": 39 } \ No newline at end of file diff --git a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-linux_x86_64.whl b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-linux_x86_64.whl index c1b63c9ad1..8e93df2e9f 100644 Binary files a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-linux_x86_64.whl and b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-linux_x86_64.whl differ diff --git a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl index bcac86f55b..caa58d61a0 100644 Binary files a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl and b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl differ diff --git a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl index e7052e97b8..0a9cc236f8 100644 Binary files a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl and b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl differ diff --git a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win32.whl b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win32.whl index f1d5393902..2b33c32d03 100644 Binary files a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win32.whl and b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win32.whl differ diff --git a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win_amd64.whl b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win_amd64.whl index d5cef4d488..8668e3492d 100644 Binary files a/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win_amd64.whl and b/packages/pyperdrive/pyperdrive-0.1.0-cp310-cp310-win_amd64.whl differ diff --git a/requirements.txt b/requirements.txt index 922c124a34..0a928e89cf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,6 @@ -e lib/chainsync[base] -e lib/ethpy[base] -e lib/pypechain[base] --e lib/hyperdrive_types[base] +-e lib/hypertypes[base] --find-links="packages/pyperdrive" pyperdrive diff --git a/tests/bot_to_db_test.py b/tests/bot_to_db_test.py index e040c7a405..1de3864944 100644 --- a/tests/bot_to_db_test.py +++ b/tests/bot_to_db_test.py @@ -205,6 +205,7 @@ def test_bot_to_db( "baseToken": hyperdrive_contract_addresses.base_token, "initialSharePrice": _to_unscaled_decimal(FixedPoint("1")), "minimumShareReserves": _to_unscaled_decimal(FixedPoint("10")), + "minimumTransactionAmount": _to_unscaled_decimal(FixedPoint("0.001")), "positionDuration": 604800, # 1 week "checkpointDuration": 3600, # 1 hour "timeStretch": expected_timestretch, @@ -242,6 +243,8 @@ def test_bot_to_db( "bondReserves", "lpTotalSupply", "sharePrice", + "shareAdjustment", + "lpSharePrice", "longExposure", "longsOutstanding", "longAverageMaturityTime", @@ -249,7 +252,6 @@ def test_bot_to_db( "shortAverageMaturityTime", "withdrawalSharesReadyToWithdraw", "withdrawalSharesProceeds", - "lpSharePrice", # Added keys "timestamp", # Calculated keys